human
Considérez le code suivant :
```avgDists = np.array([1, 8, 6, 9, 4])
ids = avgDists.argsort()[:n]
```
Cela me donne les indices des ```n``` plus petits éléments. Est-il possible d'utiliser ce même ```argsort``` dans l'ordre décroissant pour obtenir les indices des ```n``` plus grands éléments
gpt
Si vous inversez le signe d'un tableau, les éléments les plus bas deviennent les éléments les plus hauts et vice-versa. Par conséquent, les indices des `n` plus grands éléments sont :
```
(-avgDists).argsort()[:n]
```
Une autre façon de raisonner à ce sujet, comme mentionné dans les commentaires, est d'observer que les grands éléments arrivent en dernier dans l'argsort. Donc, vous pouvez lire à partir de la fin de l'argsort pour trouver les `n` plus grands éléments :
```
avgDists.argsort()[::-1][:n]
```
Les deux méthodes ont une complexité temporelle O(n log n), car l'appel à argsort est le terme dominant ici. Mais la deuxième approche a un avantage intéressant : elle remplace une négation O(n) du tableau par une tranche O(1). Si vous travaillez avec de petits tableaux à l'intérieur de boucles, vous pouvez obtenir des gains de performance en évitant cette négation, et si vous travaillez avec de grands tableaux, vous pouvez économiser de la mémoire car la négation crée une copie de l'ensemble du tableau.

Notez que ces méthodes ne donnent pas toujours des résultats équivalents : si une implémentation de tri stable est demandée à argsort, par exemple en passant l'argument mot-clé kind='mergesort', alors la première stratégie préservera la stabilité du tri, mais la deuxième stratégie la rompra (c'est-à-dire que les positions des éléments égaux seront inversées).