Python
数値計算
numpy
科学技術計算
行列計算

[Pythonによる科学・技術計算] @演算子による行列積の計算, python3.5以降, numpy

More than 1 year has passed since last update.

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)