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

📅  最后修改于: 2022-05-13 01:55:03.167000             🧑  作者: Mango

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

'numpy.ndarray' 对象没有属性 'index'是一个属性错误表示Numpy array没有可用的索引方法属性

当我们尝试使用 index 方法在 Numpy 数组中查找特定元素的索引时,会发生此错误。下面的代码是一个示例,当“numpy.ndarray”对象没有属性“index”时会抛出错误

示例

Python3
# 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)


Python3
# 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)


Python3
# 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)


Python3
# 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)


输出

由于在 Numpy 中没有称为 index 的方法,它会引发属性错误。

解决方案

要修复此错误,而不是使用 index 方法来查找元素的索引,请使用 where 方法返回一个数组,该数组由指定元素的索引组成

句法

示例 1:

在 where 方法中指定 Numpy 数组中存在的元素

Python3

# 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 开始,因此在 numbers 数组中,第 0索引值 0组成,第 1索引值为 1第 2索引值为 23个索引的值为9 ,因此它返回了一个数组包含值 3。

示例 2:

在 where 方法中指定一个元素,以便我们指定的元素在数组中出现多次。

Python3

# 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在第 0 和5 索引处的 numbers 数组出现了 2 次,因此它返回一个包含元素 0 的 2 个索引值的数组。

示例 3:

将元素传递给实际不在数组中的 where 方法。

Python3

# 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 不存在于 numbers 数组中,因此它返回了一个空数组