对多维数组使用numpy.argmax()
我有一个四维数组,也就是 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) out of range (0<=index<1) in dimension 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 个回答
1
如果我理解得没错,这段代码应该可以运行:
numpy.put(data, index, values)
今天我学到了新东西,谢谢你。
15
你可以通过 numpy.indices()
来获取由 index
索引的最大值:
x, z, t = numpy.indices(index.shape)
data[x, index, z, t]