NumPy에서 2D 배열을 더 작은 2D 하위 배열로 분할하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-08 07:08:02
원래의
276명이 탐색했습니다.

How to Slice a 2D Array into Smaller 2D Subarrays in NumPy?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿