关于python:获取多维numpy数组中最大项的位置

Get the position of the biggest item in a multi-dimensional numpy array

如何获得多维numpy数组中最大项的位置?


argmax()方法应该有帮助。

更新

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

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

更新2

(感谢KennyTM的评论)您可以使用unravel_index(a.argmax(), a.shape)获取作为元组的索引:

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


(编辑)我指的是一个被删除的旧答案。公认的答案就在我的后面。我同意argmax比我的回答好。

这样做不是更易读/更直观吗?

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

或者,

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


您可以简单地编写一个函数(只在二维中工作):

1
2
3
4
5
6
7
8
9
10
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)