【问题标题】:How to return the positions of the maximum value in an array如何返回数组中最大值的位置
【发布时间】:2020-11-07 14:07:39
【问题描述】:

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

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() 更好的函数,因为我真正需要的是最终最大值的位置。

【问题讨论】:

    标签: python numpy argmax


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      既然你提到你只对最大值的最后一个位置感兴趣,一个稍微快一点的解决方案可能是:

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

      这里:

      A.flatA 的平面视图。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-09
        • 2016-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-03
        • 2023-02-26
        相关资源
        最近更新 更多