如何return数组中最大值的位置
How to return the positions of the maximum value in an array
如前所述,我想 return 数组最大值的位置。例如,如果我有数组:
A = np.matrix([[1,2,3,33,99],[4,5,6,66,22],[7,8,9,99,11]])
np.argmax(A) returns 只有第一个最大值,在本例中为 4。但是我该如何编写代码才能 returns [ 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.flat
是A
的平面图。
A.flat[::-1]
是那个平面图的反转图
np.argmax(A.flat[::-1])
returns 最大值的第一次出现,在反向视图中。
如前所述,我想 return 数组最大值的位置。例如,如果我有数组:
A = np.matrix([[1,2,3,33,99],[4,5,6,66,22],[7,8,9,99,11]])
np.argmax(A) returns 只有第一个最大值,在本例中为 4。但是我该如何编写代码才能 returns [ 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.flat
是A
的平面图。
A.flat[::-1]
是那个平面图的反转图
np.argmax(A.flat[::-1])
returns 最大值的第一次出现,在反向视图中。