Me sorprende que esta pregunta específica no se haya hecho antes, pero realmente no la encontré en SO ni en la documentación de np.sort
.
Digamos que tengo una matriz numérica aleatoria con números enteros, por ejemplo:
> temp = np.random.randint(1,10, 10)
> temp
array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4])
Si lo ordeno, obtengo un orden ascendente por defecto:
> np.sort(temp)
array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7])
pero quiero que la solución se ordene en orden descendente .
Ahora, sé que siempre puedo hacer:
reverse_order = np.sort(temp)[::-1]
pero, ¿esta última afirmación es eficaz ? ¿No crea una copia en orden ascendente y luego invierte esta copia para obtener el resultado en orden inverso? Si este es realmente el caso, ¿existe una alternativa eficiente? No parece que np.sort
acepte parámetros para cambiar el signo de las comparaciones en la operación de clasificación para poner las cosas en orden inverso.
temp[::-1].sort()
sabe que tiene que ordenar en orden inverso? La forma en que lo leo es: invierta la matriz original y luego ordénela (en orden ascendente). ¿Por qué invertir la matriz original (que viene en un orden aleatorio) y luego ordenarla en orden ascendente devolvería la matriz en orden inverso?