Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
In Développement Dernière mise à jour : 18 juillet 2023
Partager sur:
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

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 :

  1. Trouvez l'élément maximum.
  2. 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.

numpy-argmax

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 est Trueet au
– Éléments de y lorsque la condition est False.

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 du argmax() 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 le axis paramètre dans la argmax() appel de fonction, le tableau est réduit le long de cet axe. Mais régler le keepdims paramètre True 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:

numpy-argmax-2darray

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.

numpy-argmax-axis0

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 :

numpy-argmax-axis1

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 C
    Auteur
    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
Merci à nos commanditaires
Plus de bonnes lectures sur le développement
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.
    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder