【毎日Python】Pythonで配列の軸を変換する方法|numpy.transpose

transpose
こつこつPython

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列の配列に変更できました。

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト