フリップアレイ
配列の反転も配列の最も重要な操作の1つであり、形状や寸法を変更する操作に属します。これは、ndarrayに属するメソッドとnumpyに属するメソッドを持つ次のメソッドによって実現できます。さらに、配列のプロパティ(ndarray.T)が置き換えられ、配列の行と列を反転する機能も実現できます。
方法 | 説明する |
---|---|
ndarray.transpose() | 転置された軸の配列ビューを返します |
ndarray.T | 配列転置 |
numpy.swapaxes() | axis1とaxis2が交換された配列ビューを返します。 |
numpy.moveaxis() | 配列の軸を新しい位置に移動します。 |
numpy.rollaxis() | 指定された位置になるまで、指定された軸を後方にスクロールします。 |
配列法
ndarray.transpose()
転置された軸の配列ビューを返します。
ndarray.transpose(*axes)
パラメータの説明:
- 軸:オプションなし、整数のタプルまたはn個の整数。
- 引数なしまたは引数なし:軸の順序を逆にします。
- 整数配列:タプルのj番目の位置にあるiは、aのi番目の軸がa.transpose()のj番目の軸になることを意味します。
- n整数:この形式は、タプル形式と機能的に同じです。
戻り値:
- アレイのビュー。
パラメータがわからない場合は、次の例を参照してください。
>>> a = np.array([[1, 2], [3, 4]])
>>> a
array([[1, 2],
[3, 4]])
>>> a.transpose() # 无参数
array([[1, 3],
[2, 4]])
>>> a.transpose((1, 0)) # 二维数组只有两个轴,0表示原数组的行,1表示原数组的列,将原来的列放在元组索引为0的位置变成行,将原来的行放在元组索引为1的位置变为列。
array([[1, 3],
[2, 4]])
>>> a.transpose(1, 0) # 与元组功能相同,比较方便的一种写法。
array([[1, 3],
[2, 4]])
同時に、numpy.transpose()を参照することもできます。この関数はこの関数と同じですが、パラメーターが少し異なります。
配列プロパティ
配列には属性(ndarray.T)があります。これは、配列の行と列を交換する転置を意味します。例は次のとおりです。
>>> a = np.array([[1, 2], [3, 4]])
>>> a
array([[1, 2],
[3, 4]])
>>> a.T
array([[1, 3],
[2, 4]])
numpy方法
numpy.transpose()
numpy.transpose(a, axes=None)
パラメータの説明:
- a:array_like、入力配列
- 軸:整数のタプルまたは整数のリスト
戻り値:
- ndarray、表示
例:
>>> x = np.arange(4).reshape((2,2))
>>> x
array([[0, 1],
[2, 3]])
>>> np.transpose(x)
array([[0, 2],
[1, 3]])
numpy.swapaxes()
numpy.swapaxes(a, axis1, axis2)
アレイの2つの軸を入れ替えます。
パラメータの説明:
- a:array_like、入力配列を受け取ります。
- axis1:最初の軸である整数を受け取ります。
- axis2:整数、2番目の軸を受け取ります。
戻り値:
- 軸を交換した後のndarray
例:
>>> x = np.array([[1,2,3]])
>>> x
array([[1, 2, 3]])
>>> np.swapaxes(x,0,1)
array([[1],
[2],
[3]])
ndarray.moveaxis()
配列の軸を新しい位置に移動します。
numpy.moveaxis(a, source, destination)
パラメータの説明:
- a:軸を回転させる必要のある配列であるndarrayを受け取ります。
- source:整数または整数のシーケンスを受け取ります。移動する軸の元の位置は一意である必要があります。
- 宛先:整数または整数のシーケンスを受け取ります。各元の軸の目標位置も一意である必要があります。
戻り値:
- ndarray
例:
>>> x = np.arange(1,61).reshape(3,4,5)
>>> x.shape
(3,4,5)
>>> x
array([[[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]],
[[21, 22, 23, 24, 25],
[26, 27, 28, 29, 30],
[31, 32, 33, 34, 35],
[36, 37, 38, 39, 40]],
[[41, 42, 43, 44, 45],
[46, 47, 48, 49, 50],
[51, 52, 53, 54, 55],
[56, 57, 58, 59, 60]]])
>>> y = np.moveaxis(x, 0, -1) # 将原来0轴(3页)中的3移动到最后一个轴(列),也就是变成3列。
>>> y
array([[[ 1, 21, 41],
[ 2, 22, 42],
[ 3, 23, 43],
[ 4, 24, 44],
[ 5, 25, 45]],
[[ 6, 26, 46],
[ 7, 27, 47],
[ 8, 28, 48],
[ 9, 29, 49],
[10, 30, 50]],
[[11, 31, 51],
[12, 32, 52],
[13, 33, 53],
[14, 34, 54],
[15, 35, 55]],
[[16, 36, 56],
[17, 37, 57],
[18, 38, 58],
[19, 39, 59],
[20, 40, 60]]])
>>> y.shape # 移动后的形状成4页,5行,3列
(4, 5, 3)
numpy.rollaxis()
指定された位置になるまで、指定された軸を後方にスクロールします。
numpy.rollaxis(a, axis, start=0)
パラメータの説明:
- a:ndarray、入力配列を受け取ります。
- axis:スクロールする必要のある軸である整数を受け取ります。
- start:オプション、整数を受け取ります。
戻り値:
- ndarrayのビュー。
例:
>>> a = np.ones((4,5,6)) # axis=0表示页,axis=1表示行,axis=2表示列
>>> np.rollaxis(a, 2, 1).shape # 将axis=2也就是列数6滚动到行axis=1也就是行
(4, 6, 5)