Comment obtenir la position du plus gros élément d'un tableau numpy multidimensionnel?
La méthode argmax()
devrait vous aider.
Mettre à jour
(Après avoir lu le commentaire) Je pense que la méthode argmax()
fonctionnerait également pour les tableaux multidimensionnels. La documentation liée en donne un exemple:
>>> a = array([[10,50,30],[60,20,40]])
>>> maxindex = a.argmax()
>>> maxindex
3
Mise à jour 2
(Merci au commentaire de KennyTM ) Vous pouvez utiliser unravel_index(a.argmax(), a.shape)
pour obtenir l'index sous forme de tuple:
>>> from numpy import unravel_index
>>> unravel_index(a.argmax(), a.shape)
(1, 0)
(edit) Je faisais allusion à une ancienne réponse qui avait été supprimée . Et la réponse acceptée est venue après la mienne. Je conviens que argmax
est préférable à ma réponse.
Ne serait-il pas plus lisible/intuitif de faire cela?
numpy.nonzero(a.max() == a)
(array([1]), array([0]))
Ou,
numpy.argwhere(a.max() == a)
Vous pouvez simplement écrire une fonction (qui ne marche qu'en 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)