다중 분할 배열을 사용하여 별도의 차원을 따라 ndarray를 조각하려고 할 때 numpy 방송 오류의 원인을 이해하는 데 문제가 있습니다. 인덱스 배열 picks
(예 : np.arange (2, 306, 3) 및 부울 배열 mask
)을 사용하여 data
ndarray (100, 306, 481)를 첫 번째 및 두 번째 차원으로 슬라이싱하려고합니다. 여기서 mask.shape
은) 중 361 개의 요소는 True
입니다.Numpy ndarray 배열로 조각 내기
data[:, picks, mask]
반환 그러나 data[:, :, mask]
,IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (102,) (361,)
data[:, picks, :]
및
data[:, :10, mask]
작업은 예상대로.
이 경우 방송은 어떻게 작동합니까? 그리고 이것을하는 비법의 방법은 무엇입니까? picks
는 (361) 요소를 가지고
당신이 원하는 경우 '(100, len (picks), len (mask))'형태의 조각이라면,'data [:, picks [:, np.newaxis], 마스크]'. '(m,)'와'(n,)'형태로 배열을 방송 할 수는 없지만'(m, 1)'및'(n,)'과 함께 할 수 있습니다. –
또한'np.ix_' 함수를 검사 할 수도 있습니다. 위는'data [np.ix_ (arange (100), picks, mask)]'와 같습니다. –