numpy入門4_「行列の入れ替えと基本行列計算」
こんにちは、ワタルです。
さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。
第4回目、「行列の入れ替えと基本行列計算」です。
よろしくお願い致します。
おまじない
import numpy as np
転置行列を作る(行と列の入れ替え)
arr = np.arange(9).reshape((3,3))#arrayを作る arr >>> array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
arr.T #行列の転置 >>> array([[0, 3, 6], [1, 4, 7], [2, 5, 8]])
arr.transpose()#transposeメソッドでも" .T "と同じく、行列の転置ができる >>> array([[0, 3, 6], [1, 4, 7], [2, 5, 8]])
引き数をとって、行列を入れ替える。
2次元配列の場合(0は行、1は列)
arr.transpose((0,1)) >>> array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
#行と列が入れ替わる arr.transpose((1,0)) >>> array([[0, 3, 6], [1, 4, 7], [2, 5, 8]])
#swapaxesでも行列を入れ替えができる。 #transposeと使い方は一緒。 arr.swapaxes(1,0) >>> array([[0, 3, 6], [1, 4, 7], [2, 5, 8]])
3次元配列の場合。
arr2 = np.arange(24).reshape(4,3,2) # 4×3×2の3次元配列。 arr2 >>> array([[[ 0, 1], [ 2, 3], [ 4, 5]], [[ 6, 7], [ 8, 9], [10, 11]], [[12, 13], [14, 15], [16, 17]], [[18, 19], [20, 21], [22, 23]]])
arr2.transpose(2,1,0)# 2×3×4の3次元配列へ。 >> array([[[ 0, 6, 12, 18], [ 2, 8, 14, 20], [ 4, 10, 16, 22]], [[ 1, 7, 13, 19], [ 3, 9, 15, 21], [ 5, 11, 17, 23]]])
行列の積(dot)
np.dot(arr.T, arr) >>> array([[45, 54, 63], [54, 66, 78], [63, 78, 93]])
#ちなみにdotは要素の掛け算ではありません。 #掛け算を試してみると。 arr.T * arr >>> array([[ 0, 3, 12], [ 3, 16, 35], [12, 35, 64]]) #np.dot(arr.T, arr)とは違うことがわかります
第5回はこちら
それじゃー、また。