読んでる。
図にするの面倒なのでnumpyでやる。(numpyだったらわかるんだけどな…)
>>> import numpy as np
>>> a = np.array([[1, 2], [3,4]])
>>> a
array([[1, 2],
[3, 4]])
>>> b = np.array([[4, 5], [7, 5]])
>>> b
array([[4, 5],
[7, 5]])
行列の行数と列数が等しい行列はn次正方行列と呼ばれる
>>> a = np.ones([5, 5])
>>> a.shape
(5, 5)
>>> a
array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]])
行列の和は成分通しの足し算
>>> a + b
array([[ 5, 7],
[10, 9]])
行列の差は成分通しの引き算
>>> a - b
array([[-3, -3],
[-4, -1]])
スカラー倍は成分に掛け算すればいい
>>> a * 10
array([[10, 20],
[30, 40]])
積
正直面倒。これは計算がパッと浮かぶようになるまで手を動かしたほうが良い(プログラムじゃなくて紙とペンで計算の流れを書くってこと)
>>> np.dot(a, b)
array([[18, 15],
[40, 35]])
通常の掛け算とは違い、左右の値を入れ替えると答えは一致しない
>>> np.dot(b, a)
array([[19, 28],
[22, 34]])
また、積はmxn行列はnxp行列のように左側の行列の列数と右側の行列の行数が等しくなければ計算できない
>>> a.shape
(2, 2)
>>> c = np.array([1, 2, 3])
>>> c.shape
(3,)
>>> np.dot(a, c)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shapes (2,2) and (3,) not aligned: 2 (dim 1) != 3 (dim 0)