Numpy:配列の反転操作(Ndarray)操作


フリップアレイ

配列の反転も配列の最も重要な操作の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)

おすすめ

転載: blog.csdn.net/shield911/article/details/124229562