Numpy:配列の形状操作(Ndarray)操作


形状操作

配列の形状に対する操作は、インプレース変数次元、ビュー変数次元、コピー変数次元の3つのタイプに分けることができ、それぞれに操作を実装するための対応する関数があります。まず、ビューとレプリカの基本的な概念を理解する必要があります。レプリカはデータのコピーです。ビューは、データの一部を元のデータと共有することです。

インプレース可変寸法

メモリ内の配列の形状を変更すると、元の配列の形状が変更されます。

方法 説明する
ndarray.resize() アレイの形状をインプレースで変更します
ndarray.shape =() 配列のshapeプロパティに直接値を割り当てます

ndarray.resize()

ndarray.resize(new_shape, refcheck=True)

アレイの形状とサイズを所定の位置に変更します。

パラメータの説明:

  • new_shape:整数のタプルまたは整数を受け取ります。タプルは、2行3列の(2、3)などの変更された配列形状です。
  • refcheck:タイプboolの値を受け取ります。デフォルトはTrueです。Falseに変更すると、参照カウントはチェックされません。

戻り値:

  • 無し

例:

>>> a = np.arange(1,7)
>>> a
array([1, 2, 3, 4, 5, 6])
>>> a.resize((2, 3)) # 或者a.resize(2, 3)
>>> a
array([[1, 2, 3],
       [4, 5, 6]])

ndarray.shape

ndarray.shapeのプロパティに直接割り当てることで、インプレースの寸法変更を実行することもできます。例は次のとおりです。

>>> a = np.arange(1,7)
>>> a
array([1, 2, 3, 4, 5, 6])
>>> a.shape = (3, 2)
>>> a
array([[1, 2],
       [3, 4],
       [5, 6]])

可変寸法を表示

ビュー変数の次元は、配列出力の形状のみを変更しますが、メモリ内の配列の形状は同じままです。

方法 説明する
ndarray.reshape() 新しい形状の配列ビューを返します
ndarray.ravel() フラット化された配列を返します

ndarray.reshape()

新しい形状の配列ビューを返します。

ndarray.reshape(shape, order='C')

パラメータの説明:

  • shape:shape、タプルまたは整数を受け入れます。
  • 順序:デフォルトは「C」です。

戻り値:

  • アレイビュー

例:

>>> a = np.arange(1,7)
>>> a
array([1, 2, 3, 4, 5, 6])
>>> a.reshape((2,3)) # 或者a.reshape(2,3)
array([[1, 2, 3],
       [4, 5, 6]])

ndarray.ravel()

ndarray.ravel([order])

引き伸ばされて平坦化された配列を返します。データは独立しておらず、データは元の配列と共有されます。

パラメータの説明:

  • 順序:オプション{'C'、'F'、'A'、'K'}

戻り値:

  • ndarray

例:

>>> x = np.array([[1, 2, 3], [4, 5, 6]])
>>> x
array([[1, 2, 3],
       [4, 5, 6]])
>>> x.ravel() 
array([1, 2, 3, 4, 5, 6])
>>> x # 数组x本身没有发生变化
array([[1, 2, 3],
       [4, 5, 6]])

可変寸法をコピーする

配列のコピーを出力します。元の配列は2つの別々の配列に属しており、元の配列の形状には影響しません。

方法 説明する
ndarray.flatten() 1次元配列にフラット化されたコピーを返します。

ndarray.flatten()

ndarray.flatten(order='C')

1次元配列に展開されたコピーを返します。

パラメータの説明:

  • 順序:オプション{'C'、'F'、'A'、'K'}、デフォルト'C'

戻り値:ndarray

  • 1D配列のコピー。

例:

>>> a = np.array([[1,2], [3,4]])
>>> a
array([[1, 2],
       [3, 4]])
>>> a.flatten() # 返回的是副本,数据与原数组a独立。
array([1, 2, 3, 4])

上記の3つの配列の形状変更の概要では、実際のアプリケーションシナリオに応じて対応する変換方法を選択できます。各変更方法には対応する関数があります。初期の学習では、関数が実現できる機能を習得する必要があります。 。構文を覚える必要はありません。関数のパラメータは実際には異なります。マスターされたプロセスの使用を停止しました。

おすすめ

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