#numpyの行列の操作性の高さには脱帽です。
学生の時に転置行列とか必死で手計算で求めてたけど、numpy使うと瞬殺できる。すばらしい!!
#array.Tで仕事終了!
例として、3×3の行列の転置行列を求めてみます。
arr3d = np.arange(9).reshape((3, 3))
すると以下の行列が生成されます。
([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
次に転置行列を求めます。ただ以下のコードでOK!!
arr3d.T
これだけで
([[0, 3, 6],
[1, 4, 7],
[2, 5, 8]])
が出てきます。これは楽ちん。
あと
arr3d.transpose()
も同様ですが、.Tの方がスタイリッシュですね。笑
引数の指定をする必要がない限りは.Tで行きます。
#最後に元の行列と転置行列を掛け合わせてみる。
行列の掛け算には
np.dot(行列1, 行列2)
でおけ!
上記では
np.dot(arr.T, arr)
で答えがでます。
([[45, 54, 63],
[54, 66, 78],
[63, 78, 93]])
以上。
※2106年9月27日 修正
.Tは転置行列を求めるにも関わらず、誤って逆行列と記載しておりました。大変失礼致しました。
なお、逆行列はlinalg.invを使用すれば求めることができます。
ご指摘いただいたnyanko-boxさん、ありがとうございました。