【发布时间】:2019-04-26 22:17:33
【问题描述】:
我为这个问题制作了两个数组的更简单示例:labelArray 是一个一维数组,其索引处的标签对应于 nD 数组someValuesArray 的相同索引。我得到标签 2 出现的所有索引,并希望检索 someValuesArray 中的值。
labelArray = [2,0,1,2]
someValuesArray= [array([[ 2.15072 , 2.12438 , 2.27047 , 2.64567 ,
2.22976 , 2.18186 ]], dtype=float32),
array([ [ 2.29442, 2.3087 , 2.3111 , 2.1962 , 2.23694, 2.16988]], dtype=float32)),
array([[2.82851 , 2.73032 , 2.78301 , 1.71722 , 1.81542 , 1.78189 ]], dtype=float32)),
array([[ 1.19271, 1.14721, 1.27894 , 1.16637, 1.23343, 1.21666]], dtype=float32)]
所以如果我想要标签 2,我会得到索引 0 和 3,这应该会给出相应数组 someValuesArray 中索引 0 和 3 的值。
但是当我想调用我的函数时,我收到了一个 TypeError @array[indices]。
TypeError: only integer scalar arrays can be converted to a scalar index
我的功能:
def searchValues(array, value):
labelArray = [2,0,1,2]
values_of_array = np.array(labelArray)
indices = np.where(values_of_array == value)[0]
return array[indices]
searchValues(someValuesArray,2)
【问题讨论】:
-
array[indices]行的目的是什么?该表达式应该创建一个新数组,它是array的子集。但是你不会对这个结果做任何事情。这不是就地操作。 -
但是至于错误,那个函数中的
array真的是numpy.ndarray吗?我怀疑这是一个列表。
标签: python arrays numpy indices