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.sortparamè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?