記事ディレクトリ
形状操作
配列の形状に対する操作は、インプレース変数次元、ビュー変数次元、コピー変数次元の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つの配列の形状変更の概要では、実際のアプリケーションシナリオに応じて対応する変換方法を選択できます。各変更方法には対応する関数があります。初期の学習では、関数が実現できる機能を習得する必要があります。 。構文を覚える必要はありません。関数のパラメータは実際には異なります。マスターされたプロセスの使用を停止しました。