Я здивований, що цього конкретного питання раніше не задавали, але я дійсно не знайшов його ні на SO, ні на документації np.sort
.
Скажімо, у мене є випадковий нумеровий масив, що містить цілі числа, наприклад:
> 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()
знати, що він має сортувати у зворотному порядку ?? Я читаю так: поверніть початковий масив і сортуйте його (у порядку зростання). Чому б реверсування вихідного масиву (приходить у випадковому порядку), а потім сортування його у порядку зростання, повертає масив у порядку реверсування?