転置行列

転置行列

転置行列

転置行列の定義

 $m\times n$ の行列
 
\[A=\begin{bmatrix}
a_{11}&a_{12} &\cdots &a_{1n}\\
a_{21}&a_{22} &\cdots &a_{2n}\\
\vdots & \vdots &\ddots &\vdots\\
a_{m1}&a_{m2} &\cdots &a_{mn}\end{bmatrix}\]
について、$a_{ij}$ と $a_{ji}$ の位置を入れ替えた行列、すなわち主対角線 (左上から右下に伸びる対角線) で成分を折り返した行列
 
\[\begin{bmatrix}
a_{11}&a_{21} &\cdots &a_{m1}\\
a_{12}&a_{22} &\cdots &a_{m2}\\
\vdots & \vdots &\ddots &\vdots\\
a_{1n}&a_{2n} &\cdots &a_{nm}\end{bmatrix}\]
を $A$ の 転置行列 (transpose) と定義し、$^tA$ または $A^T$ のように表します。また、行列 $A$ の転置行列を得ることを「$A$ を転置する」と言います。

  Python 転置行列 (transpose)

転置行列の性質

 行列 $A$ の転置は線形操作です。
 すなわち、任意の行列 $A,\ B$ とスカラー$k$ について
 
\[\begin{align*}&A+B^T=A^T+B^T\tag{1}\\[6pt]
&(kA)^T=k(A^T)\tag{2}\end{align*}\]
が成り立ちます。

 $A$ の転置行列を再び転置すると $A$ を得ます。
 
\[(A^T)^T=A\tag{3}\]
 行列積 $(AB)$ の転置は
 
\[(AB)^T=B^TA^T\tag{4}\]
で与えられます。

 $A$ の行列式 $\mathrm{det}A$ について、
 
\[\mathrm{det}A=\mathrm{det}(A^T)\tag{5}\]
が成り立ちます。

 逆行列の転置は転置行列の逆行列です:
 
\[(A^{-1})^T=(A^T)^{-1}\tag{6}\]
 

numpy.ndarray.T

 NumPy で配列 (ndarray) を生成すると、自動的に転置配列もデータ属性として付与されます。転置配列は ndarray.T で参照します。

# リストSLA026

import numpy as np

# 乱数を初期化
np.random.seed(11)

# 要素を無作為に生成して4×4行列を定義
# [[1 2 8 2]
#  [8 3 9 1]
#  [1 5 3 2]
#  [6 6 8 5]]
a = np.random.randint(1, 10, (4, 4))

# aの転置行列を表示
print(a.T)
[[1 8 1 6]
 [2 3 5 6]
 [8 9 3 8]
 [2 1 2 5]]

numpy.transpose()

 numpy.transpose() に行列 a を渡すと a の転置行列を返します。

# リストSLA027

import numpy as np

# 乱数を初期化
np.random.seed(12)

# 要素を無作為に生成して3×5行列を定義
# [[7 2 3 4 4]
#  [1 7 2 5 6]
#  [3 7 1 6 9]]
a = np.random.randint(1, 10, (3, 5))

# aの転置行列
at = np.transpose(a)

print(at)
[[7 1 3]
 [2 7 7]
 [3 2 1]
 [4 5 6]
 [4 6 9]]