logo

Pythonのnumpy.reshape()

numpy.reshape() 関数は NumPy パッケージで使用できます。リシェイプとはその名の通り「形を変える」という意味です。 numpy.reshape() 関数は、データを変更せずに配列に新しい形状を取得するのに役立ちます。

場合によっては、データをワイドからロングに再形成する必要があります。したがって、この状況では、 reshape() 関数を使用して配列を再形成する必要があります。

構文

 numpy.reshape(arr, new_shape, order='C') 

パラメーター

reshape() 関数には次のパラメータがあります。

1) arr: 配列のようなもの

これは ndarray です。これは、再形成するソース配列です。このパラメータは必須であり、numpy.reshape() 関数で重要な役割を果たします。

mysql 表示ユーザー

2) new_shape: int または int のタプル

元の配列を変換する形状は、元の配列と互換性がある必要があります。整数の場合、結果はその長さの 1 次元配列になります。 1 つの形状の寸法は -1 にすることができます。ここで、値は配列の長さと残りの次元によって近似されます。

3) 順序: {'C'、'F'、'A'}、オプション

これらのインデックス順序パラメータは、 reshape() 関数で重要な役割を果たします。これらのインデックス順序は、ソース配列の要素を読み取り、このインデックス順序を使用して再形成された配列に要素を配置するために使用されます。

  1. インデックス順序「C」は、最後の軸インデックスが最も速く変化し、最も遅く変化する最初の軸インデックスに戻る、C のようなインデックス順序を使用している要素の読み取り/書き込みを意味します。
  2. インデックス順序「F」は、Fortran のようなインデックス順序を使用する要素の読み取り/書き込みを意味します。最後の軸インデックスの変化が最も遅く、最初の軸インデックスの変化が最も速くなります。
  3. 「C」および「F」の順序は、基礎となる配列のメモリ レイアウトをまったく考慮せず、インデックス付けの順序のみを参照します。
  4. インデックス順序 'A' は、arr がメモリ内で連続している場合は Fortran のようなインデックス順序で要素の読み取り/書き込みを行い、それ以外の場合は C のような順序を使用することを意味します。

戻り値

この関数は ndarray を返します。可能であれば、これは新しいビュー オブジェクトです。それ以外の場合はコピーになります。返される配列のメモリ レイアウトは保証されません。

例 1: C 風のインデックス順序付け

 import numpy as np x=np.arange(12) y=np.reshape(x, (4,3)) x y 

出力:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) 

上記のコードでは

  • numpy をエイリアス名 np でインポートしました。
  • np.arrange() 関数を使用して配列 'a' を作成しました。
  • 変数「y」を宣言し、np.reshape() 関数の戻り値を割り当てました。
  • 配列 'x' と形状を関数に渡しました。
  • 最後に、arr の値を出力してみました。

出力では、配列は 3 行 4 列として表されています。

例 2: C ravel と C reshape と同等

 import numpy as np x=np.arange(12) y=np.reshape(np.ravel(x),(3,4)) x y 

ravel() 関数は、連続したフラット化された配列を作成するために使用されます。入力の要素を含む 1 次元配列が返されます。コピーは必要な場合にのみ作成されます。

スター型トポロジ

出力:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) 

例 3: Fortran のようなインデックスの順序付け

 import numpy as np x=np.arange(12) y=np.reshape(x, (4, 3), order='F') x y 

出力:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 4, 8], [ 1, 5, 9], [ 2, 6, 10], [ 3, 7, 11]]) 

上記のコードでは

  • numpy をエイリアス名 np でインポートしました。
  • np.arrange() 関数を使用して配列 'a' を作成しました。
  • 変数「y」を宣言し、np.reshape() 関数の戻り値を割り当てました。
  • 配列 'x'、形状、および Fortran に似たインデックス順序を関数に渡しました。
  • 最後に、arr の値を出力してみました。

出力では、配列は 4 行 3 列として表されています。

例 4: Fortran のようなインデックスの順序付け

 import numpy as np x=np.arange(12) y=np.reshape(np.ravel(x, order='F'), (4, 3), order='F') x y 

出力:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 4, 8], [ 1, 5, 9], [ 2, 6, 10], [ 3, 7, 11]]) 

例 5: 未指定の値は 2 であると推測されます。

 import numpy as np x=np.arange(12) y=np.reshape(x, (2, -1)) x y 

上記のコードでは

  • numpy をエイリアス名 np でインポートしました。
  • np.arrange() 関数を使用して配列 'a' を作成しました。
  • 変数「y」を宣言し、np.reshape() 関数の戻り値を割り当てました。
  • 関数に配列 'x' と形状 (未指定の値) を渡しました。
  • 最後に、arr の値を出力してみました。

出力では、配列は 2 行 5 列として表されています。

出力:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11]])