numpy.transoposeは、配列を転置する(軸を反対に入れ替える)関数です。
実際のコードで確認していきましょう。
1. np.transposeの使い方
まずは基本的な書き方を確認しましょう。
書き方:
np.argsort(a, axes=None)
パラメーター:
引数 | 型 | 解説 |
a | array_like | 配列を渡します。 |
axes(optional) | list of int | デフォルトでは各軸を逆向きにします。例えば、shape(M, N)の2次元配列ならshape(N, M)に、shape(M, N,O)の3次元配列ならshape(O, N, M)にします。指定した場合は、指定したaxisの順番に変更します。 |
戻り値:
ndarray:軸が変換された配列を戻します。 |
注:axesキーワード引数を使て、テンソルを反転するためには、transpose(a, argsort(axes))を使います。
一緒に確認したい関数:
- moveaxis, argsort
それでは、使い方を見てみましょう。
1.1. 配列の軸を入れ替える
np.transpose()は、配列の軸を入れ替える(逆にする)関数です。
1次元配列の場合は、入れ替える軸が1つしかないため、以下のコードのように引数に渡した配列をそのまま返します。
''' 1次元配列は軸が1つしかないので変わらない '''
import numpy as np
arr = np.array([1, 2, 3])
np.transpose(arr)
2次元配列の場合は、行と列の2つの軸を入れ替えます。例えば、元の配列がshape(N, M)なら、関数から戻ってくる配列はshape(M, N)になります。
以下のコードをご確認ください。
''' 2次元配列では行と列を入れ替える '''
arr = np.arange(6).reshape(2, 3)
print('arr: \n', arr,)
print('arr.shape: \n', arr.shape, '\n')
print('transposed: \n', np.transpose(arr))
print('transposed.shape: \n', np.transpose(arr).shape)
3次元配列の場合は、軸が、奥行きと行と列の3つあります。
np.transpose()は、軸を入れ替える(逆にする)ので、例えば、元の配列がshape(N, M, O)なら、関数から戻ってくる配列はshape(O, M, N)になります。
''' 3次元配列では奥行きと列を入れ替える '''
arr = np.arange(24).reshape(2, 3, 4)
print('arr: \n', arr,)
print('arr.shape: \n', arr.shape, '\n')
print('transposed: \n', np.transpose(arr))
print('transposed.shape: \n', np.transpose(arr).shape)
1.2. 入れ替える軸の順番を指定する
np.transpose()はデフォルトなら、元の配列の軸を反対にします。
この時、オプション引数のaxes(axisの複数形)を指定すると、入れ替える軸の順番を指定することができます。
例えば、shape(M, M, O)の3次元配列を、np.transpose()に渡せば、デフォルトではshape(O, M, N)で戻ってきます。この入れ替えの順番を指定することができるのです。
3次元配列では、axis=0は「奥行きM」、axis=1は「行N」、axis=2は「列O」です。
そのため、(1, 2, 0)と指定すれば、戻ってくる配列はshape(N, O, M)になりますし、(0, 2, 1)と指定すれば、戻ってくる配列はshape(M, O, N)になります。
2次元配列では軸が2つしかないため、これは意味を成しません。これを使うのは3次元配列以上の場合です。
それでは、以下のコードを確認してみましょう。
''' axeseで入れ替える軸を指定(3次元配列以上)) '''
arr = np.arange(24).reshape(2, 3, 4)
print('arr: \n', arr,)
print('arr.shape: \n', arr.shape, '\n')
# 軸を、奥行き、列、行の順番に入れ替える。
print('transposed: \n', np.transpose(arr, (0, 2, 1)))
print('transposed.shape: \n', np.transpose(arr, (0, 2, 1)).shape)
2. まとめ
以上が、numpy.transpose()の使い方です。
コメント