我有 N 维矩阵,其中包含具有 N 个参数的函数的值。每个参数都有离散数量的值。我需要在除一个之外的所有参数上最大化该函数,从而产生一个大小等于非最大化参数值的数量的一维向量。我还需要保存其他参数采用的值。
为此,我想迭代地应用于numpy.max
不同的轴以减少矩阵的维数以找到我需要的东西。然后,最终向量将仅取决于我遗漏的参数。
但是,我无法找到最终元素的原始索引(其中包含有关其他参数所采用的值的信息)。我虽然关于numpy.argmax
以相同的方式使用numpy.max
但我无法取回原始索引。
我正在尝试的一个例子是:
x = [[[1,2],[0,1]],[[3,4],[6,7]]]
args = np.argmax(x, 0)
这返回
[[1 1]
[1 1]]
这意味着 argmax 正在选择原始矩阵中的元素 (2,1,4,7)。但是如何获得他们的指数呢?我尝试unravel_index
使用args
直接作为矩阵的索引x
,从 numpy 到 index 的一堆函数都没有成功。
使用numpy.where
不是解决方案,因为输入矩阵内部可能具有相同的值,因此我无法区分不同的原始值。