在多维数组上使用numpy.argmax()

时间:2011-04-27 01:31:55

标签: python indexing numpy closest

我有一个4维数组,即data.shape = (20,30,33,288)。我正在使用

找到最接近n的数组的索引
index = abs(data - n).argmin(axis = 1), so
index.shape = (20,33,288) with the indices varying. 

我想将data[index] = "values"values.shape = (20,33,288)一起使用,但data[index]会在范围内返回错误“index(8)超出范围(0< = index< 1) 0“或此操作需要相对较长的时间来计算并返回一个形状似乎没有意义的矩阵。

如何返回正确值的数组?即,

data[index] = "values" with values.shape = (20,33,288)

这似乎是一个简单的问题,有一个简单的答案吗?

我最终希望找到index2 = abs(data - n2).argmin(axis = 1),所以我可以执行一个操作,比如索引处的数据和index2处的数据,而不循环遍历变量。这可能吗?

我正在使用python2.7和numpy版本1.5.1。

2 个答案:

答案 0 :(得分:14)

您应该可以使用index访问numpy.indices()索引的最大值:

x, z, t = numpy.indices(index.shape)
data[x, index, z, t]

答案 1 :(得分:1)

如果我理解正确,这应该有效:

numpy.put(data, index, values)

今天我学到了新的东西,谢谢。