2D 배열을 더 작은 배열로 분할
문제:
2차원 배열( 2D) NumPy 배열을 더 작은 2D 배열로 변환합니다. 예를 들어, 2x4 배열을 두 개의 2x2 배열로 변환할 수 있습니다.
해결책:
reshape와 swapaxes 기능의 조합을 사용하면 배열을 "블록"으로 나눌 수 있습니다. " 다음은 이를 달성하는 Python 구현입니다.
def blockshaped(arr, nrows, ncols): h, w = arr.shape assert h % nrows == 0, f"{h} rows is not evenly divisible by {nrows}" assert w % ncols == 0, f"{w} cols is not evenly 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) [out]: [[ 0 1 2 3 4 5] [ 6 7 8 9 10 11] [12 13 14 15 16 17] [18 19 20 21 22 23]]
nrows=2 및 ncols=3과 함께 블록 모양을 사용하면 이 배열을 다음 블록으로 분할할 수 있습니다.
print(blockshaped(c, 2, 3)) [out]: [[[ 0 1 2] [ 6 7 8]] [[ 3 4 5] [ 9 10 11]] [[12 13 14] [18 19 20]] [[15 16 17] [21 22 23]]]
이 데모에서는 2D를 슬라이스하는 방법을 보여줍니다. 지정된 차원의 더 작은 직사각형 배열로 배열합니다.
위 내용은 NumPy 2D 배열을 더 작은 2D 배열로 어떻게 나눌 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!