如何修复:numpy.ndarray’ object has no attribute ‘index’

如何修复: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.ndarray'对象没有'index'属性

由于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不存在于数组中,所以它返回一个空数组。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy教程