python - Numpy 数组不能在单个 [] 中建立索引

标签 python numpy indexing

>>> 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/

相关文章:

python Mac OS : os. path.getsize 返回的值与 du -ks 不同?

python - Django 测试 : See traceback where wrong Response gets created

python - 如何加快多处理队列的同时读写速度?

python - 显示处理后的 numpy 图像的 Webbots (OpenCV Python)

sql - 带有意外索引扫描的慢查询

python - 用于锯齿状切片的 numpy 速记

python - 如何在python中制作函数列表?

python - 询问 Numpy。为什么我能得到这个结果?

python - 基本优化的 numpy 和 sympy lambdify 结果的差异

database - 主索引,非键相等 - Silbershatz 数据库系统概念,A3