>>> allData.shape
Out[72]: (8L, 161L)
>>> mask = allData[2,:]
>>> allData[[0,1,3],:][:,mask == 1] # works fine
>>> allData[[0,1,3],mask == 1] # error: ValueError: shape mismatch: objects cannot be broadcast to a single shape
为什么 numpy 数组不能在单个括号 []
中进行索引?
最佳答案
将 allData[[0,1,3],mask == 1]
更改为 allData[[0,1,3],argwhere(mask == 1)]
应该修复它。
简要说明,如果您按[[list1], [list2]]
对数组进行切片,则两个列表都应该是索引列表。如果其中一个被替换为 :
以获取该轴中的所有元素,则另一个列表可以是相同大小的 bool 数组。只有其中一个需要用 :
代替。考虑以下 3D 数组示例:
b=random.random((5, 10,2))
b[[0,1,3],:, some_mask==1] #works
b[:,:, some_mask==1] #works
b[[0,1,3],[2,4], some_mask==1] #ValueError
关于python - Numpy 数组不能在单个 [] 中建立索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19145548/