如何修复:“numpy.ndarray”对象没有“index”属性


使用 NumPy 时可能遇到的错误是:

 AttributeError : 'numpy.ndarray' object has no attribute 'index'

当您尝试在没有可用索引属性的 NumPy 数组上使用index()函数时,会发生此错误。

以下示例展示了如何在实践中解决此错误。

如何重现错误

假设我们有以下 NumPy 数组:

 import numpy as np

#create NumPy array
x = np. array ([4, 7, 3, 1, 5, 9, 9, 15, 9, 18])

我们可以使用以下语法来查找数组中的最小值和最大值:

 #find minimum and maximum values of array
min_val = np. min (x)
max_val = np. max (x)

#print minimum and maximum values
print (min_val, max_val)

1 18

现在假设我们试图找到数组中最小值和最大值的索引位置:

 #attempt to print index position of minimum value
x. index (min_val)

AttributeError : 'numpy.ndarray' object has no attribute 'index'

我们收到错误,因为我们无法将index()函数应用于 NumPy 数组。

如何解决该错误

要查找 NumPy 数组中最小值和最大值的索引位置,我们可以使用 NumPywhere ()函数:

 #find index position of minimum value
n.p. where (x == min_val)

(array([3]),)

#find index position of maximum value
n.p. where (x == max_val)

(array([9]),)

从结果我们可以看出:

  • 数组的最小值位于索引位置3
  • 数组的最大值位于索引位置9

我们可以使用相同的通用语法来查找 NumPy 数组中任何值的索引位置。

例如,我们可以使用以下语法来查找 NumPy 数组中哪些索引位置等于值 9:

 #find index positions that are equal to the value 9
n.p. where (x == 9 )

(array([5, 6, 8]),)

从结果中我们可以看到索引位置5、6、8处的值都等于9

其他资源

以下教程解释了如何修复 Python 中的其他常见错误:

如何修复 Pandas 中的 KeyError
如何修复:ValueError:无法将 float NaN 转换为 int
如何修复:ValueError:操作数无法与形状一起广播

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注