我有一个4维数组,即data.shape = (20,30,33,288)
。我发现最接近阵列到n的使用在多维数组上使用numpy.argmax()
index = abs(data - n).argmin(axis = 1), so
index.shape = (20,33,288) with the indices varying.
索引I想用data[index] = "values"
与values.shape = (20,33,288)
,但data[index]
返回错误“索引(8)超出范围(0 < =索引< 1)在维度0“或此操作需要相当长的时间来计算并返回一个形状似乎没有意义的矩阵。
如何返回正确值的数组?即
data[index] = "values" with values.shape = (20,33,288)
这似乎是一个简单的问题,有没有一个简单的答案?
我最终想找到index2 = abs(data - n2).argmin(axis = 1)
,所以我可以执行一个操作,比如索引处的sum数据到index2处的数据,而不需要循环变量。这可能吗?
我使用python2.7和numpy版本1.5.1。
当人们不知道ndim时,还有答案吗? – 2012-08-18 16:10:28
@AndreasMueller:是的,使用'tup [:axis] +(index,)+ tup [axis:]'作为'data'的索引,其中'tup'是'numpy.indices()'返回的元组。 – 2012-08-22 21:42:37