schedule2019-03-18

Numpyで転置行列を算出する | Python

Numpyは行列の扱いがものすごく簡単です。 転置行列の記述の仕方を説明します。

転置行列

転置行列は行列A\bm{A}に対してA\bm{A}(i,j)(i, j)要素と(j,i)(j, i)要素を入れ替えた行列。

AijT=Aji{\bm{A}_{ij}}^T = \bm{A}_{ji}

3×33\times3行列だと下記のように要素が入れ替わっている。

(a1,1amp;a1,2amp;a1,3a2,1amp;a2,2amp;a2,3a3,1amp;a3,2amp;a3,3)T=(a1,1amp;a2,1amp;a3,1a1,2amp;a2,2amp;a3,2a1,3amp;a2,3amp;a3,3){ \begin{pmatrix} a_{1,1} & a_{1,2} & a_{1,3} \\ a_{2,1} & a_{2,2} & a_{2,3} \\ a_{3,1} & a_{3,2} & a_{3,3} \\ \end{pmatrix} }^T = \begin{pmatrix} a_{1,1} & a_{2,1} & a_{3,1} \\ a_{1,2} & a_{2,2} & a_{3,2} \\ a_{1,3} & a_{2,3} & a_{3,3} \\ \end{pmatrix}

numpyで転置行列

np.array.Tとするだけで転置できる。

3×3の行列

import numpy as np

# 3×3の行列
A = np.arange(9).reshape((3, 3))

# A
print(A)
"""
[[0 1 2]
 [3 4 5]
 [6 7 8]]
 """

# A^T 転置行列
print(A.T)
"""
[[0 3 6]
 [1 4 7]
 [2 5 8]]
"""
  • .arange(9)は0から8までの1次元配列を作成する。
  • .reshape((3, 3))3×33 \times 3行列に変換している。

2×3の行列

import numpy as np

# 2×3の行列
A = np.arange(6).reshape((2, 3))

# A
print(A)
"""
[[0 1 2]
 [3 4 5]]
 """

# A^T 転置行列
print(A.T)
"""
[[0 3]
 [1 4]
 [2 5]]
"""

参考