Pythonで配列の軸を入れ替える方法です。
使用するのは、Pythonのnumpyライブラリのtranspose関数です。
import numpy as np
まず、このような2次元配列で試してみましょう。
a_1 = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
transpose関数の引数に配列を指定します。
実行します。
列と行の値を入れ替えることができました。
np.transpose(a_1)
実行結果:
array([[1, 4, 7],
[2, 5, 8],
[3, 6, 9]])
次に、このような3次元配列で試してみましょう。
a_2 = np.array([[[1, 2, 3, 4]],
[[5, 6, 7, 8]],
[[9, 10, 11, 12]]])
3次元配列の軸を変更するには、第二引数に置換後の軸の順番をタプルで指定します。
元の配列は(0, 1, 2)で表され、0が次元、1が行、2が列です。この(0, 1, 2)を変換したい順に指定します。
np.transpose(a_2,(0, 1, 2))
実行結果:
array([[[1, 2, 3, 4]],
[[5, 6, 7, 8]],
[[9, 10, 11, 12]]])
例えば変換後の軸を(0,1,2)と指定すると、そのまま同じ配列が返ってきます。
a_2.shape
実行結果:
(3, 1, 4)
np.transpose(a_2,(0, 1, 2)).shape
実行結果:
(3, 1, 4)
shape属性で確認すると、このように3次元、1行、4列の配列であることがわかります。
np.transpose(a_2,(2, 1, 0))
実行結果:
array([[[ 1, 5, 9]],
[[ 2, 6, 10]],
[[ 3, 7, 11]],
[[ 4, 8, 12]]])
np.transpose(a_2,(2, 1, 0)).shape
実行結果:
(4, 1, 3)
では、(2,1,0)と指定してみましょう。 4次元1行3列の配列に変更できました。
np.transpose(a_2,(0, 2, 1))
実行結果:
array([[[ 1],
[ 2],
[ 3],
[ 4]],
[[ 5],
[ 6],
[ 7],
[ 8]],
[[ 9],
[10],
[11],
[12]]])
np.transpose(a_2,(0, 2, 1)).shape
実行結果:
(3, 4, 1)
続けて、(0,2,1)と指定してみましょう。
3次元、4行、1列の配列に変更できました。