在另一个ndarray

时间:2016-02-18 19:13:06

标签: python arrays numpy

我正在尝试从另一个ndarray中的索引获取ndarray的值,但我一直收到此错误

  

IndexError为数组提供了太多索引。

我正在尝试从scores获取值的数组有scores.shape = (10,10000) 指出索引的数组indicesindices.shape = (10000,2)

我试图以这种方式获得价值:

values = scores[tuple(indices)]

但这是我收到错误的地方。

我尝试这样做的方法是访问几个单独的分数值,例如scores[0,6], scores[1,9]在另一个数组中,所以我得到了类似

的内容
[scores[0,6],scores[1,9],...] 

一气呵成,避免循环。那些[[0,6] , [1,9], ...]存储在索引数组中。我提到了以前可以导致解决的问题。

1 个答案:

答案 0 :(得分:2)

请尝试以下操作:scores[indices[:,0],indices[:,1]]。或者,scores[tuple(indices.T)]

执行scores[tuple(indices)]时,tuple(indices)正在创建一个包含2个元素数组的元组。当你试图获得10,000维数组的2个元素时,Numpy会解释这个!对于您需要的索引类型,Numpy需要每个维度的值数组。换句话说,它不是( [x1,y1], [x2,y2] ),而是( [x1,x2], [y1, y2] )