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
Susan Sarandonoriginal
2024-12-25 03:59:08504parcourir

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

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])]

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

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!

Déclaration:
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