Я удивлен, что этот конкретный вопрос не задавался раньше, но я действительно не нашел его на SO или документации np.sort
.Эффективная сортировка массива numpy в порядке убывания?
Скажем, у меня есть случайный 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])
, но я хочу, чтобы решение для сортировки in по убыванию заказать.
Теперь, я знаю, что всегда можно сделать:
reverse_order = np.sort(temp)[::-1]
, но это последнее утверждение эффективным? Разве он не создает копию в порядке возрастания, а затем отменяет эту копию, чтобы получить результат в обратном порядке? Если это действительно так, есть ли эффективная альтернатива? Не похоже, что np.sort
принимает параметры, чтобы изменить знак сравнения в операции сортировки, чтобы получить информацию в обратном порядке.
Спасибо, но как 'temp [:: - 1] .sort()' знает, что он должен сортировать в обратном порядке? То, как я его читаю, это: отменить исходный массив, а затем отсортировать его (в порядке возрастания). Почему бы изменить исходный массив (входящий в случайный порядок), а затем отсортировать его в порядке возрастания, вернуть массив в обратном порядке? –
Является ли это поведение документированным, так как оно довольно неинтуитивно. – ebarr
Не то, что я видел, но '[:: - 1]' часто используется с 'argsort' –