2D 배열을 더 작은 2D 하위 배열로 분할
질문:
2D 배열을 더 작은 배열로 나눌 수 있나요? 2D 배열 NumPy?
예:
2x4 배열을 두 개의 2x2 배열로 변환:
[[1,2,3,4] -> [[1,2] [3,4] [5,6,7,8]] [5,6] [7,8]]
메커니즘:
새 어레이를 만드는 대신 기존 어레이의 모양을 바꾸는 것이 더 나은 접근 방식입니다. reshape()를 사용하여 배열하고 swapaxes()를 사용하여 축을 교체합니다.
블록 모양 함수:
아래는 블록 모양의 구현입니다. 기능:
def blockshaped(arr, nrows, ncols): """ Partitions an array into blocks. Args: arr (ndarray): The original array. nrows (int): Number of rows in each block. ncols (int): Number of columns in each block. Returns: ndarray: Partitioned array. """ 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))
데모:
np.random.seed(365) c = np.arange(24).reshape((4, 6)) print(c) print(blockshaped(c, 2, 3))
대체 솔루션:
SuperBatFish의 blockwise_view는 다음과 같은 또 다른 옵션을 제공합니다. 다른 블록 배열과 뷰 기반 표현.
위 내용은 NumPy에서 2D 배열을 더 작은 2D 하위 배열로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!