Я удивлен, что этот конкретный вопрос не задавали раньше, но я действительно не нашел его ни в SO, ни в документации np.sort
.
Скажем, у меня есть случайный массив numpy, содержащий целые числа, например:
> temp = np.random.randint(1,10, 10)
> temp
array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4])
Если я его отсортирую, я получу по умолчанию возрастающий порядок:
> np.sort(temp)
array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7])
но я хочу, чтобы решение было отсортировано в порядке убывания.
Теперь я знаю, что всегда могу:
reverse_order = np.sort(temp)[::-1]
но эффективно ли это последнее утверждение ? Разве он не создает копию в порядке возрастания, а затем переворачивает эту копию, чтобы получить результат в обратном порядке? Если это действительно так, есть ли эффективная альтернатива? Не похоже, что np.sort
принимает параметры для изменения знака сравнений в операции сортировки, чтобы получить вещи в обратном порядке.
temp[::-1].sort()
узнать, что сортировка производится в обратном порядке ?? Я читаю это так: переверните исходный массив, а затем отсортируйте его (в порядке возрастания). Почему изменение исходного массива (поступающего в случайном порядке) и последующая его сортировка в порядке возрастания возвращает массив в обратном порядке?