Maison >développement back-end >Tutoriel Python >Comment classer efficacement les éléments d'un tableau dans Python/NumPy sans double tri ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-28 21:29:30912parcourir

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>

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>

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!

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