Sea*_*ean 5 python indexing numpy
>>> 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
Run Code Online (Sandbox Code Playgroud)
为什么numpy数组不能在一个括号内编入索引[]?
更改allData[[0,1,3],mask == 1]到allData[[0,1,3],argwhere(mask == 1)]应该修复它.
简要说明,如果您对数组进行切片[[list1], [list2]],则两个列表都应该是索引列表.如果其中一个被替换:为获取该轴中的所有元素,则另一个列表可以是相同大小的布尔数组.其中只有一个需要替换:.考虑以下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
Run Code Online (Sandbox Code Playgroud)