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()
>>> maxindex
3
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)