T属性【NumPy】
一般的な使い方
この属性は行列の転置を求めるために用いられる。これを用いると転置行列$ A^\topをA.Tとシンプルに記述できる。
2次元配列を対象として確認しよう。
code:p01.py
import numpy as np
B = np.arange(12).reshape(3, 4)
print('B')
print(B.shape)
print(B)
print('B.T')
print((B.T).shape)
print(B.T)
配列Bの形状が(3, 4)であれば、B.Tの形状は(4, 3)となる。行列として考えると確かに転置操作が行われていることが確認できる。
配列の軸に着目して解釈すると、
第0軸 → 第1軸
第1軸 → 第0軸
のように対応している。
もう少し詳しく
1次元配列の場合
code:p02.py
import numpy as np
A = np.arange(4)
print('A')
print(A.shape)
print(A)
print('A.T')
print((A.T).shape)
print(A.T)
1次元配列の場合、結果は変わらないようだ。軸に着目すると、
第0軸 → 第0軸
という感じですね。
code:p03.py
import numpy as np
C = np.arange(24).reshape(2, 3, 4)
print('C')
print(C.shape)
print(C)
print('C.T')
print((C.T).shape)
print(C.T)
3次元配列の場合
(2, 3, 4) → (4, 3, 2)
と形状が変化した。つまり、軸が以下のように移動したということである。
第0軸 → 第2軸
第1軸 → 第1軸
第2軸 → 第0軸
操作前と後における軸の対応関係に何らかの法則が見えてきたのではないか?4次元配列で確認すると、
code:p04.py
import numpy as np
D = np.arange(24).reshape(1, 2, 3, 4)
print('D')
print(D.shape)
print('D.T')
print((D.T).shape)
# D
# (1, 2, 3, 4)
# D.T
# (4, 3, 2, 1)
第0軸 → 第3軸
第1軸 → 第2軸
第2軸 → 第1軸
第3軸 → 第0軸
のように、軸の順序を反転させる操作が行われていることが確認できた。
普段のプログラムで2次元以上の配列の転置を求めることはあまり無いと思われるが、ひょっとするとRNNの学習データのような高次元の配列を整形する際に有用かもしれない。