我在嘗試使用多個切片陣列沿不同尺寸切片ndarray時,無法理解numpy廣播錯誤背後的原因。我試圖使用索引數組picks
(例如,np.arange(2,306,3))和布爾數組mask
沿着第一維和第二維分割(100,306,481),其中mask.shape
是(481, )其中361個元素是True
。Numpy ndarray與陣列切片
data[:, picks, mask]
回報
IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (102,) (361,)
然而data[:, :, mask]
,data[:, picks, :]
和data[:, :10, mask]
按預期方式工作。
在這種情況下廣播是如何工作的?什麼是這樣做的pythonic方式?
如果你想(100,len(picks),len(mask))',你可以使用'data [:, picks [:, np.newaxis],掩碼]'。你不能廣播具有'(m,)'和'(n,)'形狀的數組,但是可以用'(m,1)'和'(n,)'來完成。 –
您可能還想檢查函數'np.ix_'。上面相當於data [np.ix_(arange(100),picks,mask)]'。 –