numpyをインポートします。
行列計算を行っていくにはnumpyが基本になります。
numpyで変数を定義し、デフォルトで配列を使っていくイメージです。
配列の演算を行うとき、Cではforを使って一つずつ回していたものをなるべくnumpyの関数を用いて実装する事で、処理が高速になります。
例えばベクトルの内積はこちら。Notebookに下記のように打ち込んで、Runを押すと結果が見れます。
import numpy as np x = np.array([1, 2, 3]) y = np.array([4, 5, 6]) z = np.dot(x, y) print(z) >> 32
内積なので、1×4 + 2×5 + 3×6 = 4 + 10 + 18 = 32 ですね。うん合ってる。
ベクトルの内積だけでなく、行列の内積も同じです。
import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = np.array([[7, 8, 9], [10, 11, 12]]) z = np.dot(x, y) print(z) >> [ [ 27 30 33] [ 61 68 75] [ 95 106 117] ]
行列計算になると一気に数字が増えますね。
この例ですと、xは3×2行列、yは2×3行列となり、zは3×3行列となります。
行の数と列の数を明示的に示す場合に、
x = np.array([ [1, 2], [3, 4], [5, 6] ])
とあらわす場合もあるようです。
行 : 横長1セットが3つ、
列 : 縦長1セットが2つ、
ですので、3×2行列です。
数学での行列計算と同じく、xの列の数とyの行の数が一致しないと計算できないので注意してください。
場合によっては転置が必要な場合もあります。
Pythonでの転置行列は.Tです。
print(x.T) >> [ [1 3 5] [2 4 6] ]
この辺りをうまく使って、for文をなるべく回避するのが、Pythonプログラムの基本のようです。