如何修复:“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:操作数无法与形状一起广播