获取多维NumPy数组中最大值的位置

2024-05-08 17:20:24 发布

您现在位置:Python中文网/ 问答频道 /正文

如何获得多维NumPy数组中最大值的位置(索引)


Tags: numpy数组
3条回答

(编辑)我指的是一个已被删除的旧答案。被接受的答案跟在我的后面。我同意argmax比我的答案好

这样做不是更具可读性/直观性吗

numpy.nonzero(a.max() == a)
(array([1]), array([0]))

或者

numpy.argwhere(a.max() == a)

您只需编写一个函数(仅适用于2d):

def argmax_2d(matrix):
    maxN = np.argmax(matrix)
    (xD,yD) = matrix.shape
    if maxN >= xD:
        x = maxN//xD
        y = maxN % xD
    else:
        y = maxN
        x = 0
    return (x,y)

{a1}方法应该会有所帮助

更新

(阅读评论后)我相信argmax()方法也适用于多维数组。链接文档给出了一个示例:

>>> a = array([[10,50,30],[60,20,40]])
>>> maxindex = a.argmax()
>>> maxindex
3

更新2

(感谢KennyTM的注释)您可以使用unravel_index(a.argmax(), a.shape)以元组的形式获取索引:

>>> from numpy import unravel_index
>>> unravel_index(a.argmax(), a.shape)
(1, 0)

相关问题 更多 >

    热门问题