2024-10-01 05:06:37 发布
网友
如上所述,我想返回数组最大值的位置。例如,如果我有数组:
A = np.matrix([[1,2,3,33,99],[4,5,6,66,22],[7,8,9,99,11]])
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.flat是A的平面视图
A.flat
A
A.flat[::-1]是该平面视图的反向视图
A.flat[::-1]
np.argmax(A.flat[::-1])返回该反向视图中第一次出现的最大值
np.argmax(A.flat[::-1])
找到数组的最大值,然后使用np.where
之后,只需索引元组的第二个元素。请注意,为了获得您感兴趣的索引,我们必须重塑数组
因为您提到您只对最大值的最后一个位置感兴趣,所以稍微快一点的解决方案可能是:
在这里:
A.flat
是A
的平面视图A.flat[::-1]
是该平面视图的反向视图np.argmax(A.flat[::-1])
返回该反向视图中第一次出现的最大值相关问题 更多 >
编程相关推荐