LoginSignup
17
14

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-07-21

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)

17
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
14