如何修复:“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 方法返回一个数组,该数组由指定元素的索引组成。
句法
Numpy.where(arrayName==value_to_find_index)
示例 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个索引的值为 2 ,第3个索引的值为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 数组中,因此它返回了一个空数组。