21
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-09-20

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

21
31
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?