繁体   English   中英

如何返回数组中最大值的位置

[英]How to return the positions of the maximum value in an array

如前所述,我想返回数组最大值的位置。 例如,如果我有数组:

A = np.matrix([[1,2,3,33,99],[4,5,6,66,22],[7,8,9,99,11]])

np.argmax(A) 只返回最大值的第一个值,在本例中为 4。但是如何编写代码使其返回 [4, 13]。 也许有比 argamax() 更好的函数,因为我真正需要的是最终最大值的位置。

找到数组的最大值,然后使用np.where

>>> m = a.max()
>>> np.where(a.reshape(1,-1) == m)
(array([0, 0]), array([ 4, 13]))

之后,只需索引元组的第二个元素。 请注意,我们必须重塑数组才能获得您感兴趣的索引。

由于您提到您只对最大值的最后一个位置感兴趣,因此稍微快一点的解决方案可能是:

A.size - 1 - np.argmax(A.flat[::-1])

这里:

A.flatA的平面视图。

A.flat[::-1]是该平面视图的反向视图。

np.argmax(A.flat[::-1])在反向视图中返回最大值的第一次出现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM