NumPy 配列のリサイズ
- 前のページ NumPy 配列の形状
- 次のページ NumPy 配列のイテレーション
配列のリシェイプ
リシェイプとは、配列の形状を変更することを意味します。
配列の形状は、各次元の要素数です。
リシェイプすることで、次元を追加または削除したり、各次元の要素数を変更したりできます。
1次元から2次元へのリシェイプ
例
以下の12要素の1次元配列を2次元配列に変換します。
最外の次元は、各配列に3つの要素を持つ4つの配列を持つ次元です:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) newarr = arr.reshape(4, 3) print(newarr)
1次元から3次元へのリシェイプ
例
以下の12要素の1次元配列を3次元配列に変換します。
最外の次元は、3つの配列を含む2つの配列を持つ2つの配列です:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) newarr = arr.reshape(2, 3, 2) print(newarr)
どんな形状にもリシェイプできますか?
はい、リシェイプが必要な要素が2つの形状で等しい場合です。
8要素の1次元配列は2行2次元配列の4要素にリシェイプできますが、3行3次元配列にリシェイプすることはできません。なぜなら、それには3x3=9要素が必要だからです。
例
8要素を持つ1次元配列を、各次元に3要素を持つ2次元配列に変換しようと試みます(エラーが発生します):
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) newarr = arr.reshape(3, 3) print(newarr)
コピーかビューを返しますか?
例
返される配列がコピーかビューかを確認します:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) print(arr.reshape(2, 4).base)
上記の例は元の配列を返すため、ビューです。
未知の次元
「未知」の次元を使用できます。
これは、reshape メソッドで次元の1つに正確な数字を指定する必要がないことを意味します。
渡されます。 -1
NumPy は、その数字を計算してくれます。
例
8つの要素の 1D 配列を 2x2 要素の 3D 配列に変換:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) newarr = arr.reshape(2, 2, -1) print(newarr)
注:以下のように、新しい配列を reshape(-1) で展開することができません。 -1
複数の次元に渡されます。
展平配列
展平配列(Flattening the arrays)とは、多次元配列を 1D 配列に変換することです。
以下を使用できます reshape(-1)
これを達成する方法
例
配列を 1D 配列に変換:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) newarr = arr.reshape(-1) print(newarr)
注:numpy flatten、ravel で配列の形状を変更できる多くの機能があり、rot90、flip、fliplr、flipud などの要素を再配置することもできます。これらの機能は、numpy の中級から上級の部分に属します。
- 前のページ NumPy 配列の形状
- 次のページ NumPy 配列のイテレーション