NumPy分割配列


NumPy配列の分割

分割は、結合の逆の操作です。

結合すると複数の配列が1つにマージされ、分割すると1つの配列が複数に分割されます。

配列の分割に使用array_split()し、分割する配列と分割数を渡します。

アレイを3つの部分に分割します。

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

newarr = np.array_split(arr, 3)

print(newarr)

注:戻り値は、3つの配列を含む配列です。

配列の要素が必要な数より少ない場合は、それに応じて最後から調整されます。

アレイを4つの部分に分割します。

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

newarr = np.array_split(arr, 4)

print(newarr)

注:使用可能なメソッドもsplit()ありますが、上記の例のように要素が分割用のソース配列に少ない場合、要素は調整されません。array_split()正しく機能しますが、 split()失敗します。



配列に分割

メソッドの戻り値は、array_split()各分割を配列として含む配列です。

配列を3つの配列に分割すると、他の配列要素と同じように、結果からそれらにアクセスできます。

分割された配列にアクセスします。

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

newarr = np.array_split(arr, 3)

print(newarr[0])
print(newarr[1])
print(newarr[2])

2次元配列の分割

2次元配列を分割する場合も同じ構文を使用します。

メソッドを使用して、array_split()分割する配列と実行する分割の数を渡します。

2次元配列を3つの2次元配列に分割します。

import numpy as np

arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])

newarr = np.array_split(arr, 3)

print(newarr)

上記の例では、3つの2次元配列が返されます。

別の例を見てみましょう。今回は、2次元配列の各要素に3つの要素が含まれています。

2次元配列を3つの2次元配列に分割します。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

newarr = np.array_split(arr, 3)

print(newarr)

上記の例では、3つの2次元配列が返されます。

さらに、分割を実行する軸を指定できます。

以下の例でも3つの2次元配列が返されますが、それらは行に沿って分割されています(axis = 1)。

2次元配列を行に沿って3つの2次元配列に分割します。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

newarr = np.array_split(arr, 3, axis=1)

print(newarr)

別の解決策はhsplit()hstack()

このメソッドを使用してhsplit()、2次元配列を行に沿って3つの2次元配列に分割します。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

newarr = np.hsplit(arr, 3)

print(newarr)

注:と同様の代替手段であり 、vstack()および dstack()として使用できます vsplit()dsplit()