Pythonの数値計算モジュールであるNumPyのアレイに対する行・列の入れ替え(転置)に関わるメソッドを記載する。
ソースコード
Python 3系の書式で記載。一見だと転置処理がわかりにくい場合もあるので、末尾の公式ドキュメント(サンプルソース記載有り)も合わせて参照して理解度を確認した方が良い。
import numpy as np
# 4x4のアレイを作成 (reshape(row, col)メソッドでrow行col列のアレイへ修正
arr = np.arange(16).reshape((4,4))
print("arr == \n", arr)
# .Tで転置したアレイを出力(arr自体は書き換わらない)
print("arr.T == \n", arr.T)
# transpose()メソッドでも同様に転置される。
print("arr.transpose() == \n", arr.transpose())
# transpose(n1, n2, n3...)と引数入れ替え順序を指定可能
# 指定できる引数の数は次元数で指定数値は0, 1, ...
print("arr.transpose(1, 0) == \n", arr.transpose(1, 0))
# この場合、↑の結果はarr.transpose()、arr.Tと同値。
# 軸の入れ替えとしてはswapaxes()もある
print("arr.swapaxes(0,1) == \n", arr.swapaxes(0,1))
# 3次元の行列を作成
arr3d = np.arange(12).reshape((3,2,2))
print("\n arr3d == \n", arr3d)
# 下記のtransposeの意味は、2x2行列(3つ)の要素の順序は同じくし
# 2x2行列内の転置を行う。
print("arr3d.transpose((0,2,1)) == \n", arr3d.transpose((0,2,1)))
実行結果
arr == [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15]] arr.T == [[ 0 4 8 12] [ 1 5 9 13] [ 2 6 10 14] [ 3 7 11 15]] arr.transpose() == [[ 0 4 8 12] [ 1 5 9 13] [ 2 6 10 14] [ 3 7 11 15]] arr.transpose(1, 0) == [[ 0 4 8 12] [ 1 5 9 13] [ 2 6 10 14] [ 3 7 11 15]] arr.swapaxes(0,1) == [[ 0 4 8 12] [ 1 5 9 13] [ 2 6 10 14] [ 3 7 11 15]] arr3d == [[[ 0 1] [ 2 3]] [[ 4 5] [ 6 7]] [[ 8 9] [10 11]]] arr3d.transpose((0,2,1)) == [[[ 0 2] [ 1 3]] [[ 4 6] [ 5 7]] [[ 8 10] [ 9 11]]]
コメント
[…] ・http://www.yukun.info/blog/2016/08/python-numpy-array-transpose.html […]