Menu

numpyでの行列の積計算

2018-10-07 - Numpy

行列の積の計算

行列の積の計算は、加算とはレベルが違ってきて、何故そうなるのかを考えると、線形代数の領域に踏み入れることになります。

行列Aと行列Bの積は

(A11 x B11) + (A12 x B21) (A11 x B12) + (A12 x B22)
(A21 x B11) + (A22 x B21) (A21 x B12) + (A22 x B22)

になります。
それの意味するところは、

function A(function B(i)) = 行列A行列Bの積 x i

の関係を成立させるのが、行列A行列Bの積の値になります。

i
=
(
i1
i2
)

A = 
(
A11 A12
A21 A22
)

B = 
(
B11 B12
B21 B22
)

function A(function B(i))
=
function A(
B11 x i1 + B12 x i2
B21 x i1 + B22 x i2
)
=
(
A11(B11 x i1 + B12 x i2) + A12(B21 x i1 + B22 x i2)
A21(B11 x i1 + B12 x i2) + A22(B21 x i1 + B22 x i2)
)
=
(
A11 x B11 x i1 + A11 x B12 x i2 + A12 x B21 x i1 + A12 x B22 x i2
A21 x B11 x i1 + A21 x B12 x i2 + A22 x B21 x i1 + A22 x B22 x i2
)
=
(
((A11 x B11) + (A12 x B21)) x i1 + ((A11 x B12) + (A12 x B22)) x i2
((A21 x B11) + (A22 x B21)) x i1 + ((A21 x B12) + (A22 x B22)) x i2
)
=
(
(A11 x B11) + (A12 x B21)    (A11 x B12) + (A12 x B22)
(A21 x B11) + (A22 x B21)    (A21 x B12) + (A22 x B22)
)
x
(
i1
i2
)

numpyでの計算の仕方

In [26]: np.dot([[1,2], [3,4]], [[5,6], [7,8]])                                                       
Out[26]: 
array([[19, 22],
       [43, 50]])