14

我有一个 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"with values.shape = (20,33,288),但data[index]返回错误“index (8) out of range (0<=index<1) in dimension 0”或者这个操作需要相对较长的时间来计算并返回一个形状不似乎没有意义。

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

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

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

我最终想找到index2 = abs(data - n2).argmin(axis = 1),所以我可以执行一个操作,比如将 index 处的数据与 index2 处的数据相加,而无需遍历变量。这可能吗?

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

4

2 回答 2

15

index您应该能够访问通过使用索引的最大值numpy.indices()

x, z, t = numpy.indices(index.shape)
data[x, index, z, t]
于 2011-04-27T10:05:02.797 回答
1

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

numpy.put(data, index, values)

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

于 2011-04-27T03:24:49.627 回答