Python 获取轴上numpy.argmax元素的索引

Python 获取轴上numpy.argmax元素的索引,python,arrays,numpy,indexing,argmax,Python,Arrays,Numpy,Indexing,Argmax,我有一个N维矩阵,它包含一个有N个参数的函数的值。每个参数都有离散数量的值。我需要在所有参数上最大化函数,除了一个,结果是一维向量的大小等于非最大化参数的值的数量。我还需要保存其他参数采用的值 为此,我想在不同的轴上迭代应用numpy.max,以降低矩阵的维数,从而找到我需要的。最后的向量将取决于我遗漏的参数 但是,我很难找到最终元素的原始索引(其中包含关于其他参数所取值的信息)。我想用与numpy.max相同的方法使用numpy.argmax,但我无法获得原始索引 我正在尝试的一个例子是: x

我有一个N维矩阵,它包含一个有N个参数的函数的值。每个参数都有离散数量的值。我需要在所有参数上最大化函数,除了一个,结果是一维向量的大小等于非最大化参数的值的数量。我还需要保存其他参数采用的值

为此,我想在不同的轴上迭代应用
numpy.max
,以降低矩阵的维数,从而找到我需要的。最后的向量将取决于我遗漏的参数

但是,我很难找到最终元素的原始索引(其中包含关于其他参数所取值的信息)。我想用与
numpy.max
相同的方法使用
numpy.argmax
,但我无法获得原始索引

我正在尝试的一个例子是:

x = [[[1,2],[0,1]],[[3,4],[6,7]]]
args = np.argmax(x, 0)
这是回报

[[1 1]
 [1 1]]
这意味着argmax正在选择原始矩阵中的元素(2,1,4,7)。但如何获得它们的指数呢?我尝试了
unlavel_index
,直接使用
args
作为矩阵
x
的索引,从numpy到index的一系列函数都没有成功

使用
numpy。其中
不是一个解决方案,因为输入矩阵中可能有相等的值,所以我无法区分不同的原始值。

x.argmax(0)
给出了沿第一轴的最大值索引。使用
np.索引
为另一个轴生成索引

x = np.array([[[1,2],[0,1]],[[3,4],[6,7]]])
x.argmax(0)
    array([[1, 1],
           [1, 1]])
a1, a2 = np.indices((2,2))
(x.argmax(0),a1,a2)
    (array([[1, 1],
            [1, 1]]),
     array([[0, 0],
            [1, 1]]),
     array([[0, 1],
            [0, 1]]))


x[x.argmax(0),a1,a2]
    array([[3, 4],
           [6, 7]])

x[a1,x.argmax(1),a2] 
    array([[1, 2],
           [6, 7]])

x[a1,a2,x.argmax(2)] 
    array([[2, 1],
           [4, 7]])
如果
x
具有其他维度,则相应地生成
a1
a2

官方文档没有详细说明如何使用
argmax
,但是前面的线程已经讨论过了。我是从你那里得到这个大概的想法的