numpyで行列の転置と、行列同士の掛け算をしよう。

  • 7
    いいね
  • 2
    コメント

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さん、ありがとうございました。