Dziwię się, że to konkretne pytanie nie zostało wcześniej zadane, ale tak naprawdę nie znalazłem go w SO ani w dokumentacji np.sort
.
Powiedzmy, że mam losową tablicę numpy zawierającą liczby całkowite, np:
> temp = np.random.randint(1,10, 10)
> temp
array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4])
Jeśli je posortuję, domyślnie otrzymuję kolejność rosnącą:
> np.sort(temp)
array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7])
ale chcę, aby rozwiązanie zostało posortowane w porządku malejącym .
Teraz wiem, że zawsze mogę:
reverse_order = np.sort(temp)[::-1]
ale czy to ostatnie stwierdzenie jest skuteczne ? Czy nie tworzy kopii w kolejności rosnącej, a następnie odwraca tę kopię, aby uzyskać wynik w odwróconej kolejności? Jeśli tak jest, czy istnieje skuteczna alternatywa? Nie wygląda na to, że np.sort
akceptuje parametry, aby zmienić znak porównań w operacji sortowania, aby uzyskać rzeczy w odwrotnej kolejności.
temp[::-1].sort()
wiadomo, że musi sortować w odwrotnej kolejności? Sposób, w jaki to czytam, jest: odwróć oryginalną tablicę, a następnie posortuj ją (w porządku rosnącym). Dlaczego odwrócenie oryginalnej tablicy (w kolejności losowej), a następnie posortowanie jej w porządku rosnącym zwróci tablicę w kolejności odwrotnej?