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

Python 在多维数组上使用numpy.argmax(),python,indexing,numpy,closest,Python,Indexing,Numpy,Closest,我有一个4维数组,即,data.shape=(20,30,33288)。我使用 index = abs(data - n).argmin(axis = 1), so index.shape = (20,33,288) with the indices varying. 我想将data[index]=“values”与values.shape=(20,33288)一起使用,但是data[index]返回的错误“索引(8)超出范围(0如果我理解正确,这应该可以: numpy.put(data,

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

index = abs(data - n).argmin(axis = 1), so
index.shape = (20,33,288) with the indices varying. 

我想将
data[index]=“values”
values.shape=(20,33288)
一起使用,但是
data[index]
返回的错误“索引(8)超出范围(0如果我理解正确,这应该可以:

numpy.put(data, index, values)

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

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


谢谢你的回答。我没有“值”,所以我不认为我可以使用numpy.put。我相信斯文的答案会起作用。当你不知道ndim时也有答案吗?@AndreasMueller:是的,使用
tup[:axis]+(index,)+tup[axis:
作为
数据的索引,其中
tup
numpy.index返回的元组()
numpy.put(data, index, values)
x, z, t = numpy.indices(index.shape)
data[x, index, z, t]