-Python- 行列の積

行列は2次元配列で表されます.以下のような行列の計算を例とします.

f:id:HidehikoMURAO:20181231002807p:plain

この計算をPythonで実装すると以下のようになります.
>>> A = np.array([[1, 2], [3, 4]])
>>> A.shape
(2, 2)
>>> B = np.array([[5, 6], [7, 8]])
>>> B.shape
(2, 2)
>>> np.dot(A, B)
array([[19, 22],
       [43, 50]])
>>> 
この例でAとBは2 x 2の行列であり,AとBの行列の積をNumPyの関数 np.dot() で計算しています(dot はドット積を表しています).np.dot は1次元配列の場合はベクトルを,2次元配列では行列の積を計算します.ここで注意が必要なのは,数学の場合と同様に np.dot(A, B) とnp.dot(B, A) は異なる値となることです.
 
続いて,2 x 3行列と3 x 2行列の積をPythonで実装すると以下のようになります.
>>> A = np.array([[1, 2, 3], [4, 5, 6]])
>>> A.shape
(2, 3)
>>> B = np.array([[1, 2], [3, 4], [5, 6]])
>>> B.shape
(3, 2)
>>> np.dot(A, B)
array([[22, 28],
       [49, 64]])
>>> 
 
続いて,3 x 2行列とベクトル(2 x 1)の積をPythonで実装すると以下のようになります.
>>> A = np.array([[1, 2], [3, 4], [5, 6]])
>>> A.shape
(3, 2)
>>> B = np.array([7, 8])
>>> B.shape
(2,)
>>> np.dot(A, B)
array([23, 53, 83])
>>>