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()