Comment classer efficacement les éléments d'un tableau dans Python/NumPy sans double tri ?

Susan Sarandon
Libérer: 2024-10-28 21:29:30
original
832 Les gens l'ont consulté

How to Rank Array Items in Python/NumPy Efficiently Without Double Sorting?

Classement plus rapide des éléments de tableau en Python/NumPy sans double tri

Dans l'analyse des données et l'apprentissage automatique, il est souvent nécessaire de classer les éléments dans un tableau en fonction de leurs valeurs. Le double tri du tableau pour le classement peut prendre du temps.

Approche initiale

Une méthode courante est illustrée ci-dessous :

<code class="python">import numpy as np

# Sample array
array = np.array([4, 2, 7, 1])

# Temporary array for sorting
temp = array.argsort()

# Rank computation
ranks = np.arange(len(array))[temp.argsort()]</code>
Copier après la connexion

Cette approche implique deux opérations de tri, augmentant sa complexité.

Solution optimisée

Pour éviter le double tri, nous pouvons exploiter deux fois la fonction argsort() de NumPy :

<code class="python">array = np.array([4, 2, 7, 1])

# First argsort to obtain element order
order = array.argsort()

# Second argsort to obtain ranking
ranks = order.argsort()</code>
Copier après la connexion

Explication

Tout d'abord, nous utilisons argsort() pour obtenir l'ordre des éléments du tableau. Ensuite, nous appliquons à nouveau argsort() sur la commande résultante, ce qui nous donne le classement.

Conclusion

Cette technique optimisée améliore considérablement la vitesse de classement des éléments du tableau en éviter les tris inutiles. Pour les tableaux de grande dimension, utilisez l'argument axis dans argsort pour spécifier l'axe de tri.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!