Numpy를 사용하여 2D 배열을 더 작은 2D 배열로 분할
2D 배열을 더 작은 2D 배열로 분할해야 하는 경우가 많습니다. 예를 들어, 2x4 어레이를 두 개의 2x2 어레이로 나누는 작업을 생각해 보십시오.
해결책:
reshape와 swapaxes 기능의 조합은 다음 시나리오에서 효과적인 것으로 입증되었습니다.
import numpy as np def blockshaped(arr, nrows, ncols): """ Converts a 2D array into a 3D array with smaller subblocks. """ h, w = arr.shape assert h % nrows == 0, f"{h} rows is not divisible by {nrows}" assert w % ncols == 0, f"{w} columns is not divisible by {ncols}" return (arr.reshape(h//nrows, nrows, -1, ncols) .swapaxes(1,2) .reshape(-1, nrows, ncols))
사용 예:
다음 배열을 고려하세요.
c = np.arange(24).reshape((4, 6)) print(c)
출력:
[[ 0 1 2 3 4 5] [ 6 7 8 9 10 11] [12 13 14 15 16 17] [18 19 20 21 22 23]]
슬라이싱 더 작은 블록으로 배열:
print(blockshaped(c, 2, 3))
출력:
[[[ 0 1 2] [ 6 7 8]] [[ 3 4 5] [ 9 10 11]] [[12 13 14] [18 19 20]] [[15 16 17] [21 22 23]]]
추가 참고 사항:
위 내용은 NumPy를 사용하여 2D 배열을 더 작은 2D 배열로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!