Maison > développement back-end > Tutoriel Python > Comment trouver efficacement les indices des N premières valeurs les plus grandes dans un tableau NumPy ?

Comment trouver efficacement les indices des N premières valeurs les plus grandes dans un tableau NumPy ?

Susan Sarandon
Libérer: 2024-12-25 03:59:08
original
456 Les gens l'ont consulté

How to Efficiently Find the Indices of the Top N Largest Values in a NumPy Array?

Identification des indices des N premières valeurs dans un tableau NumPy

Obtenir l'indice de la valeur maximale dans un tableau NumPy est possible avec la fonction np.argmax. Cependant, pour récupérer les indices de plusieurs valeurs maximales, cet article explore des approches alternatives.

Les versions récentes de NumPy (à partir de la version 1.8) comportent la fonction argpartition, qui peut récupérer des indices selon une condition spécifiée. Pour obtenir les indices des n plus grands éléments, utilisez cette fonction avec un argument négatif pour n, indiquant un tri décroissant.

>>> a = np.array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0]) # Sample array
>>> ind = np.argpartition(a, -4)[-4:] # Indices of top 4 largest elements
Copier après la connexion

Contrairement à argsort, argpartition fonctionne linéairement dans le pire des cas, mais elle ne renvoie pas indices triés. Pour les trier, utilisez np.argsort sur le tableau partitionné :

>>> sorted_ind = ind[np.argsort(a[ind])]
Copier après la connexion

Vous pouvez également tirer parti des capacités d'indexation avancées de NumPy :

>>> descending_order = np.argsort(a)[::-1] # Indices of elements in descending order
>>> top_n = descending_order[:n] # Top n indices
Copier après la connexion

Des solutions personnalisées existent également, telles que :

  • Tri du tableau et sélection des n premiers elements
  • Comparaison itérative d'éléments et mise à jour d'une liste d'index
  • Utilisation de la fonction max() avec des affectations conditionnelles

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal