如何得到多维 NumPy 数组中最大值的位置(索引) ?
The argmax() method should help.
argmax()
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:
unravel_index(a.argmax(), a.shape)
>>> 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.
argmax
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)
An alternative way is change numpy array to list and use max and index methods:
numpy
list
max
index
List = np.array([34, 7, 33, 10, 89, 22, -5]) _max = List.tolist().index(max(List)) _max >>> 4