'IndexError: only integers, slices (`:`), ellipsis (`...`)' ...?

'IndexError: only integers, slices (`:`), ellipsis (`...`)' ...?

这个错误有很多问题,但我无法在我的代码中找到问题的根源在哪里。我的代码如下:

for i in segs:
    if relDiff(segs[i+1], segs[i]) > 0.05:
        arr_x[i] = 0; arr_y[i] = 0

我在第三行收到错误:IndexError: only integers, slices (:), ellipsis (...), numpy.newaxis (None) and integer or boolean arrays are valid indices

segs是一个数组,relDiff是我做的一个计算相对差的函数。这是该函数:

def relDiff(x,x_ref):
    return np.abs((x-x_ref)/x_ref)

非常感谢任何帮助!

由于您使用 segs 中的项目作为 arr_xarr_y 的索引,因此 segs 必须是整数的 list/array。否则,您必须将每个项目转换为整数,例如 arr_x[int(i)]。在您的程序中这样做在逻辑上是否有意义由您决定,因为您的要求是未知的。我们不知道 segs 包含什么。

试试这个:

for i in segs:
    print(i)
    segs[i]

问题应该很明显了!

In [317]: x = np.array([1.2, 3.2, .5])
In [318]: for i in x:
     ...:     print(i)
     ...:     x[i]
     ...: 
1.2
Traceback (most recent call last):
  File "<ipython-input-318-41c2ba7b6f7d>", line 3, in <module>
    x[i]
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

In [319]: x[1.2]
Traceback (most recent call last):
  File "<ipython-input-319-28ffb042b45f>", line 1, in <module>
    x[1.2]
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

如果必须按索引迭代(这里可能不需要),使用range:

In [321]: for i in range(len(x)):
     ...:     print(i)
     ...:     print(x[i])
     ...: 
     ...: 
0
1.2
1
3.2
2
0.5