【发布时间】:2022-01-17 09:09:32
【问题描述】:
我正在运行一个非常简单的示例 -
a = np.array([1,2,3,4,5])
mask= np.array([True, False])
a[mask]
这会产生IndexError: boolean index did not match indexed array along dimension 0; dimension is 5 but corresponding boolean dimension is 2。
混淆源于我对Numpy doc这部分的理解(或缺乏理解):-
如果
obj.ndim == x.ndim, x[obj]返回一个由x的元素填充的一维数组,对应于True的obj值。搜索顺序将是行优先的 C 样式。如果obj的True值在x的范围之外,则会引发索引错误。 如果obj小于x,则等于用False填充它。 (强调我的)
我认为mask 数组会转换为[True, False, False, False, False],但似乎情况并非如此。此外,a 和 mask 具有相同的 ndim 值,那么为什么错误消息会说 a 的维度为 5 但布尔维度为 2。
我错过了什么?如何解释文档?
【问题讨论】:
-
错误中的 5 和 2 是沿维度 0 的维度长度。措辞可能会更好 tbh^^
-
我想知道这是否是一个文档错误,没有跟上版本。 numpy 一直在清理这样的事情。我会确保布尔值匹配大小。
-
您什么都没有,文档有误,错误消息使用 dimension 不一致。我不记得有什么时候这是正确的。
-
我们需要搜索发行说明。
-
请考虑在github of Numpy 上填写问题,以便帮助未来的用户(并可能解决这个可能的错误/措辞问题)。