python3.5以降, 行列Aと行列Bとの積ABを @演算子を使って
A@B
と書けるようになった。この@演算子を用いることで,コーディングにおける可読性が向上する。
ただし以下のコードでみるように行列AおよびBを配列オブジェクトではなく行列オブジェクトとして生成しておく必要がある。
###内容 @演算子を使って行列積を計算する。
import numpy as np
"""
行列の積
C = A B
"""
# 行列Aを作る
a1_lis = [1, 0, 0]
a2_lis = [0, 2, 0]
a3_lis = [0, 0, 4]
A_matrix=np.matrix([a1_lis, a2_lis, a3_lis])# "np.array"ではなく,"np.matrix"として行列オブジェクトを生成
# 行列Bを作る
b1_lis = [3, 0, 0]
b2_lis = [1, 2, 0]
b3_lis = [1, 0, 4]
B_matrix=np.matrix([b1_lis, b2_lis, b3_lis]) #
C_matrix = A_matrix @ B_matrix C = A Bの計算
print(C_matrix)
##結果
[[ 3 0 0]
[ 2 4 0]
[ 4 0 16]]
###補遺 @演算子を使わない場合
行列AとBを, 行列オブジェクトではなく配列オブジェクトとして生成した場合(np.array()とする)は,
上のコードの
C_matrix = A_matrix @ B_matrix
の部分は以下のように書く必要がある。
C_matrix = A_matrix.dot(B_matrix)