如何修复:numpy.ndarray’ object has no attribute ‘index’
‘numpy.ndarray’对象没有属性’index’是一个属性错误,表示Numpy数组中没有索引方法或属性可供使用。
当我们试图使用index方法找到Numpy数组中某个特定元素的索引时,就会发生这个错误。下面的代码是一个例子,当’numpy.ndarray’对象没有属性’index’时,会出现错误
示例 :
# import necessary packages
import numpy as np
# Create a Numpy array
numbers = np.array([0, 1, 2, 9, 8, 0])
# finding the index value of 9 in
# numbers array
numbers.index(9)
输出
由于Numpy中没有叫index的方法,所以会抛出一个属性错误。
解决方案
为了解决这个错误,不要使用index方法来寻找一个元素的索引,而是使用where方法,它返回一个由指定元素的索引组成的数组。
语法
Numpy.where(arrayName==value_to_find_index)
示例 1:
在where方法中指定一个存在于Numpy数组中的元素
# import necessary packages
import numpy as np
# Create a Numpy array
numbers = np.array([0, 1, 2, 9, 8, 0])
# finding the index value of 9 in
# numbers array
np.where(numbers == 9)
输出
(array([3], dtype=int64),)
由于数组中的索引从0开始,这里在数字数组中,第0个索引由值0组成,第1个索引有值1,第2个索引有值2,第3个索引有值9,这是指定的,所以它返回一个包含值3的数组。
示例 2:
在where方法中指定一个元素,使我们指定的元素在一个数组中出现一次以上。
# import necessary packages
import numpy as np
# Create a Numpy array
numbers = np.array([0, 1, 2, 9, 8, 0])
# finding the index values of 0 in
# numbers array
np.where(numbers == 0)
输出:
(array([0, 5], dtype=int64),)
由于元素0在数组中出现了2次,分别为0和5的索引,所以它返回一个由元素0的2个索引值组成的数组。
示例 3:
向where方法传递一个实际上不在数组中的元素。
# import necessary packages
import numpy as np
# Create a Numpy array
numbers = np.array([0, 1, 2, 9, 8, 0])
# finding the index value of a number
# which is not in numbers array
np.where(numbers == 7)
输出
(array([], dtype=int64),)
如果我们向where方法传递一个不在数组中的元素,那么它将返回一个空数组,因为在数组的任何索引上都没有指定的元素。这里7不存在于数组中,所以它返回一个空数组。