Je suis surpris que cette question spécifique n'ait pas été posée auparavant, mais je ne l'ai vraiment pas trouvée sur SO ni sur la documentation de np.sort
.
Disons que j'ai un tableau numpy aléatoire contenant des entiers, par exemple:
> temp = np.random.randint(1,10, 10)
> temp
array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4])
Si je le trie, j'obtiens un ordre croissant par défaut:
> np.sort(temp)
array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7])
mais je veux que la solution soit triée par ordre décroissant .
Maintenant, je sais que je peux toujours faire:
reverse_order = np.sort(temp)[::-1]
mais cette dernière déclaration est-elle efficace ? Ne crée-t-il pas une copie dans l'ordre croissant, puis inverse cette copie pour obtenir le résultat dans l'ordre inverse? Si tel est bien le cas, existe-t-il une alternative efficace? Il ne semble pas que les np.sort
paramètres acceptent pour changer le signe des comparaisons dans l'opération de tri pour obtenir les choses dans l'ordre inverse.
temp[::-1].sort()
sait-il qu'il doit trier dans l'ordre inverse ?? La façon dont je le lis est: inversez le tableau d'origine, puis triez-le (par ordre croissant). Pourquoi l'inversion du tableau d'origine (dans un ordre aléatoire) et le tri par ordre croissant renverrait-il le tableau dans l'ordre inverse?