Get the position of the largest value in a multi-dimensional NumPy array Get the position of the largest value in a multi-dimensional NumPy array arrays arrays

Get the position of the largest value in a multi-dimensional NumPy array


The argmax() method should help.

Update

(After reading comment) I believe the argmax() method would work for multi dimensional arrays as well. The linked documentation gives an example of this:

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

Update 2

(Thanks to KennyTM's comment) You can use unravel_index(a.argmax(), a.shape) to get the index as a tuple:

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


(edit) I was referring to an old answer which had been deleted. And the accepted answer came after mine. I agree that argmax is better than my answer.

Wouldn't it be more readable/intuitive to do like this?

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

Or,

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


You can simply write a function (that works only in 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)