索引错误:布尔索引与沿着第0维索引的数组不匹配。

14

在我更新Numpy到1.13.1之前,我的代码运行得很好。现在我得到了以下错误:

IndexError: boolean index did not match indexed array along dimension 0; dimension is 5 but corresponding boolean dimension is 4

...被抛到这行代码:

m = arr[np.diff(np.cumsum(arr) >= sum(arr) * i)]

我似乎无法理解它。有什么建议吗?

这是我的示例代码:

a = [1,2,3,4,5]
l = [0.85,0.90]
s = sorted(a, reverse = False)
arr = np.array(s)
for i in l:
    m = arr[np.diff(np.cumsum(arr) >= sum(arr) * i)]

添加一个能够重现该问题的示例案例? - Divakar
请参考以下链接:https://docs.scipy.org/doc/numpy/reference/generated/numpy.diff.html - Ibe
1个回答

7

np.diff的输出比data_array少一个元素。

输出的形状与a相同,除了在轴上,该维度减小了n。

numpy.diff

我正在使用Numpy 1.11,但是不像之前出现IndexError,出现了VisibleDeprecationWarning。所以我猜测使用错误的大小不再被允许。

您需要定义希望实现的行为,例如从第二个元素开始或删除最后一个元素:

arr = np.array([1,2,3,4,5])

arr2 = arr[:-1]
m = arr2[np.diff(np.cumsum(arr) >= sum(arr))]

arr3 = arr[1:]
m = arr3[np.diff(np.cumsum(arr) >= sum(arr))]

1
谢谢。我将原始数组中的所有数据点保留,并在其末尾添加了“0”。 - Ibe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接