Sono sorpreso che questa domanda specifica non sia stata posta prima, ma davvero non l'ho trovata su SO né sulla documentazione di np.sort
.
Supponiamo di avere un array numpy casuale che contiene numeri interi, ad esempio:
> temp = np.random.randint(1,10, 10)
> temp
array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4])
Se lo ordino, ottengo l'ordine crescente per impostazione predefinita:
> np.sort(temp)
array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7])
ma voglio che la soluzione venga ordinata in ordine decrescente .
Ora, so che posso sempre fare:
reverse_order = np.sort(temp)[::-1]
ma questa ultima affermazione è efficiente ? Non crea una copia in ordine crescente e quindi inverte questa copia per ottenere il risultato in ordine inverso? Se è davvero così, esiste un'alternativa efficiente? Non sembra che np.sort
accetta parametri per modificare il segno dei confronti nell'operazione di ordinamento per ottenere le cose in ordine inverso.
temp[::-1].sort()
sapere che deve ordinare in ordine inverso ?? Il modo in cui lo leggo è: inverti l'array originale, quindi ordinalo (in ordine crescente). Perché invertire l'array originale (arrivando in ordine casuale) e quindi ordinarlo in ordine crescente restituirebbe l'array in ordine inverso?