Dans ce didacticiel, vous apprendrez à utiliser le Fonction NumPy argmax() pour trouver l'index de l'élément maximum dans les tableaux.
NumPy est une bibliothèque puissante pour le calcul scientifique en Python ; il fournit des tableaux à N dimensions plus performants que listes Python. L'une des opérations courantes que vous effectuerez lorsque vous travaillerez avec des tableaux NumPy consiste à trouver la valeur maximale dans le tableau. Cependant, vous voudrez peut-être parfois trouver le indice à laquelle la valeur maximale se produit.
La argmax()
La fonction vous aide à trouver l'indice du maximum dans les tableaux unidimensionnels et multidimensionnels. Continuons pour apprendre comment cela fonctionne.
How to Find the Index of Maximum Element in a NumPy Array
Pour suivre ce tutoriel, vous devez avoir Python et NumPy installée. Vous pouvez coder en démarrant un REPL Python ou en lançant un notebook Jupyter.
Tout d'abord, importons NumPy sous l'alias habituel np
.
import numpy as np
Vous pouvez utiliser le NumPy max()
fonction pour obtenir la valeur maximale dans un tableau (éventuellement le long d'un axe spécifique).
array_1 = np.array([1,5,7,2,10,9,8,4])
print(np.max(array_1))
# Output
10
Dans ce cas, np.max(array_1)
renvoie 10, ce qui est correct.
Supposons que vous souhaitiez trouver l'index auquel la valeur maximale se produit dans le tableau. Vous pouvez adopter l'approche en deux étapes suivante :
- Trouvez l'élément maximum.
- Trouver l'indice de l'élément maximum.
In array_1
, la valeur maximale de 10 se produit à l'index 4, après l'indexation zéro. Le premier élément est à l'index 0 ; le deuxième élément est à l'indice 1, et ainsi de suite.

Pour trouver l'index auquel le maximum se produit, vous pouvez utiliser la NumPy où() la fonction. np.where(condition)
renvoie un tableau de tous les indices où le condition
is True
.
Vous devrez puiser dans le tableau et accéder à l'élément au premier index. Pour trouver où se trouve la valeur maximale, nous définissons le condition
à array_1==10
; rappelez-vous que 10 est la valeur maximale dans array_1
.
print(int(np.where(array_1==10)[0]))
# Output
4
Nous avons utilisé np.where()
avec uniquement la condition, mais c'est pas la méthode recommandée pour utiliser cette fonction.
📑 Remarque : Fonction NumPy where():
np.where(condition,x,y)
Retours:– Éléments de
x
lorsque la condition estTrue
et au
– Éléments dey
lorsque la condition estFalse
.
Par conséquent, enchaîner les np.max()
et np.where()
fonctions, nous pouvons trouver l'élément maximum, suivi de l'index auquel il se produit.
Au lieu du processus en deux étapes ci-dessus, vous pouvez utiliser la fonction NumPy argmax() pour obtenir l'index de l'élément maximum dans le tableau.
Syntax of the NumPy argmax() Function
La syntaxe générale pour utiliser la fonction NumPy argmax() est la suivante :
np.argmax(array,axis,out)
# we've imported numpy under the alias np
Dans la syntaxe ci-dessus :
- tableau est n'importe quel tableau NumPy valide.
- axe est un paramètre facultatif. Lorsque vous travaillez avec des tableaux multidimensionnels, vous pouvez utiliser le paramètre d'axe pour trouver l'indice du maximum le long d'un axe spécifique.
- ande est un autre paramètre facultatif. Vous pouvez régler le
out
paramètre à un tableau NumPy pour stocker la sortie duargmax()
la fonction.
Notes: À partir de la version 1.22.0 de NumPy, il y a un supplément
keepdims
paramètre. Lorsque nous précisons leaxis
paramètre dans laargmax()
appel de fonction, le tableau est réduit le long de cet axe. Mais régler lekeepdims
paramètreTrue
garantit que la sortie renvoyée a la même forme que le tableau d'entrée.
Using NumPy argmax() to Find the Index of the Maximum Element
#1. Utilisons la fonction NumPy argmax() pour trouver l'index de l'élément maximum dans array_1
.
array_1 = np.array([1,5,7,2,10,9,8,4])
print(np.argmax(array_1))
# Output
4
La argmax()
la fonction renvoie 4, ce qui est correct ! ✅
#2. Si nous redéfinissons array_1
tel que 10 se produise deux fois, le argmax()
la fonction retourne uniquement l'indice de la première occurrence.
array_1 = np.array([1,5,7,2,10,10,8,4])
print(np.argmax(array_1))
# Output
4
Pour le reste des exemples, nous utiliserons les éléments de array_1
nous avons défini dans l'exemple #1.
Utilisation de NumPy argmax() pour trouver l'index de l'élément maximum dans un tableau 2D
LET remodeler le tableau NumPy array_1
dans un tableau à deux dimensions avec deux lignes et quatre colonnes.
array_2 = array_1.reshape(2,4)
print(array_2)
# Output
[[ 1 5 7 2]
[10 9 8 4]]
Pour un tableau à deux dimensions, l'axe 0 désigne les lignes et l'axe 1 désigne les colonnes. Les tableaux NumPy suivent zéro indexation. Ainsi, les indices des lignes et des colonnes pour le tableau NumPy array_2
sont les suivants:

Maintenant, appelons le argmax()
fonction sur le tableau à deux dimensions, array_2
.
print(np.argmax(array_2))
# Output
4
Même si nous avons appelé argmax()
sur le tableau à deux dimensions, il renvoie toujours 4. Ceci est identique à la sortie du tableau à une dimension, array_1
de la section précédente.
Pourquoi cela? 🤔
C'est parce que nous n'avons spécifié aucune valeur pour le paramètre d'axe. Lorsque ce paramètre d'axe n'est pas défini, par défaut, le argmax()
La fonction renvoie l'index de l'élément maximum le long du tableau aplati.
Qu'est-ce qu'un tableau aplati ? S'il existe un tableau à N dimensions de forme d1 x d2 x … x dN, où d1, d2, jusqu'à dN sont les tailles du tableau selon les N dimensions, alors les tableau aplati est un long tableau unidimensionnel de taille d1 * d2 * … * dN.
Pour vérifier à quoi ressemble le tableau aplati pour array_2
, vous pouvez appeler le flatten()
méthode, comme indiqué ci-dessous :
array_2.flatten()
# Output
array([ 1, 5, 7, 2, 10, 9, 8, 4])
Index de l'élément maximum le long des lignes (axe = 0)
Continuons à trouver l'indice de l'élément maximum le long des lignes (axe = 0).
np.argmax(array_2,axis=0)
# Output
array([1, 1, 1, 1])
Cette sortie peut être un peu difficile à comprendre, mais nous comprendrons comment cela fonctionne.
Nous avons défini le axis
paramètre à zéro (axis = 0
), car nous aimerions trouver l'indice de l'élément maximum le long des lignes. Par conséquent, la argmax()
La fonction renvoie le numéro de la ligne dans laquelle l'élément maximal apparaît, pour chacune des trois colonnes.
Visualisons cela pour mieux comprendre.

D'après le schéma ci-dessus et le argmax()
sortie, nous avons ceci :
- Pour la première colonne à l'index 0, la valeur maximale 10 apparaît dans la deuxième ligne, à l'index = 1.
- Pour la deuxième colonne à l'index 1, la valeur maximale 9 apparaît dans la deuxième ligne, à l'index = 1.
- Pour les troisième et quatrième colonnes aux index 2 et 3, les valeurs maximales 8 et 4 les deux se produisent dans la deuxième ligne, à l'index = 1.
C'est précisément pourquoi nous avons la sortie array([1, 1, 1, 1])
car l'élément maximum le long des lignes se produit dans la deuxième ligne (pour toutes les colonnes).
Index de l'élément maximum le long des colonnes (axe = 1)
Ensuite, utilisons le argmax()
fonction pour trouver l'index de l'élément maximum le long des colonnes.
Exécutez l'extrait de code suivant et observez la sortie.
np.argmax(array_2,axis=1)
array([2, 0])
Pouvez-vous analyser la sortie ?
Nous avons mis axis = 1
pour calculer l'indice de l'élément maximum le long des colonnes.
La argmax()
La fonction renvoie, pour chaque ligne, le numéro de colonne dans laquelle se trouve la valeur maximale.
Voici une explication visuelle :

D'après le schéma ci-dessus et le argmax()
sortie, nous avons ceci :
- Pour la première ligne à l'index 0, la valeur maximale 7 apparaît dans la troisième colonne, à l'index = 2.
- Pour la deuxième ligne à l'index 1, la valeur maximale 10 apparaît dans la première colonne, à index = 0.
J'espère que vous comprenez maintenant ce que la sortie, array([2, 0])
signifie.
Using the Optional out Parameter in NumPy argmax()
Vous pouvez utiliser l'option out
le paramètre dans la fonction NumPy argmax() pour stocker la sortie dans un tableau NumPy.
Initialisons un tableau de zéros pour stocker la sortie du précédent argmax()
appel de fonction - pour trouver l'indice du maximum le long des colonnes (axis= 1
).
out_arr = np.zeros((2,))
print(out_arr)
[0. 0.]
Reprenons maintenant l'exemple de la recherche de l'index de l'élément maximum le long des colonnes (axis = 1
) et réglez le out
à out_arr
nous avons défini ci-dessus.
np.argmax(array_2,axis=1,out=out_arr)
Nous voyons que l'interpréteur Python lance un TypeError
, Que l' out_arr
a été initialisé à un tableau de flottants par défaut.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/numpy/core/fromnumeric.py in _wrapfunc(obj, method, *args, **kwds)
56 try:
---> 57 return bound(*args, **kwds)
58 except TypeError:
TypeError: Cannot cast array data from dtype('float64') to dtype('int64') according to the rule 'safe'
Par conséquent, lors du réglage du out
paramètre au tableau de sortie, il est important de s'assurer que le tableau de sortie a la forme et le type de données corrects. Comme les indices de tableau sont toujours des entiers, nous devrions définir le dtype
paramètre int
lors de la définition du tableau de sortie.
out_arr = np.zeros((2,),dtype=int)
print(out_arr)
# Output
[0 0]
Nous pouvons maintenant aller de l'avant et appeler le argmax()
fonctionner avec les deux axis
et out
paramètres, et cette fois, il s'exécute sans erreur.
np.argmax(array_2,axis=1,out=out_arr)
La sortie du argmax()
la fonction est maintenant accessible dans le tableau out_arr
.
print(out_arr)
# Output
[2 0]
Conclusion
J'espère que ce tutoriel vous a aidé à comprendre comment utiliser la fonction NumPy argmax(). Vous pouvez exécuter les exemples de code dans un Carnet Jupyter.
Passons en revue ce que nous avons appris.
- La fonction NumPy argmax() renvoie l'index de l'élément maximum dans un tableau. Si l'élément maximum apparaît plus d'une fois dans un tableau a, puis np.argmax(a) renvoie l'indice de la première occurrence de l'élément.
- Lorsque vous travaillez avec des tableaux multidimensionnels, vous pouvez utiliser l'option axe paramètre pour obtenir l'indice de l'élément maximum le long d'un axe particulier. Par exemple, dans un tableau à deux dimensions : en définissant axe = 0 et axe = 1, vous pouvez obtenir l'index de l'élément maximal le long des lignes et des colonnes, respectivement.
- Si vous souhaitez stocker la valeur renvoyée dans un autre tableau, vous pouvez définir l'option ande paramètre au tableau de sortie. Cependant, le tableau de sortie doit avoir une forme et un type de données compatibles.
Ensuite, consultez le guide détaillé sur Ensembles Python. Apprenez également à utiliser les Fonction de veille Python pour ajouter des retards à votre code.
-
Bala Priya est un développeur et rédacteur technique indien avec plus de trois ans d'expérience dans le domaine de la rédaction de contenu technique. Elle partage son apprentissage avec la communauté des développeurs en créant des didacticiels techniques, des guides pratiques, etc. lire la suite