Estou surpreso que esta pergunta específica não tenha sido feita antes, mas eu realmente não a encontrei no SO nem na documentação do np.sort
.
Digamos que eu tenha uma matriz numpy aleatória contendo inteiros, por exemplo:
> temp = np.random.randint(1,10, 10)
> temp
array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4])
Se eu classificar, obtenho ordem crescente por padrão:
> np.sort(temp)
array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7])
mas quero que a solução seja classificada em ordem decrescente .
Agora, eu sei que sempre posso fazer:
reverse_order = np.sort(temp)[::-1]
mas esta última afirmação é eficiente ? Não cria uma cópia em ordem crescente e, em seguida, reverte essa cópia para obter o resultado na ordem reversa? Se for esse o caso, existe uma alternativa eficiente? Parece que não np.sort
aceita parâmetros para alterar o sinal das comparações na operação de classificação para obter as coisas na ordem inversa.
temp[::-1].sort()
sabe que tem que classificar na ordem inversa ?? A maneira como eu li isso é: inverta a matriz original e, em seguida, classifique-a (em ordem crescente). Por que inverter a matriz original (vindo em uma ordem aleatória) e, em seguida, classificá-la em ordem crescente retornaria a matriz na ordem inversa?