У меня есть NumPy массив как это:Как сортировать по убыванию с numpy?
A = array([[1, 3, 2, 7],
[2, 4, 1, 3],
[6, 1, 2, 3]])
Я хотел бы отсортировать строки этой матрицы в порядке убывания и получить аргументы отсортированного матрицы, как это:
As = array([[3, 1, 2, 0],
[1, 3, 0, 2],
[0, 3, 2, 1]])
я сделал следующее:
import numpy
A = numpy.array([[1, 3, 2, 7], [2, 4, 1, 3], [6, 1, 2, 3]])
As = numpy.argsort(A, axis=1)
Но это дает мне сортировку по возрастанию. Кроме того, после того, как я потратил некоторое время на поиск решения в Интернете, я ожидаю, что должен быть аргумент функции argsort
от numpy, который изменит порядок сортировки. Но, видимо, нет такого аргумента! Зачем!?
Существует аргумент order
. Я попытался, предположив, numpy.argsort(..., order=reverse)
, но он не работает.
Я искал решение в предыдущих вопросов здесь, и я обнаружил, что я могу сделать:
import numpy
A = numpy.array([[1, 3, 2, 7], [2, 4, 1, 3], [6, 1, 2, 3]])
As = numpy.argsort(A, axis=1)
As = As[::-1]
По какой-то причине, As = As[::-1]
не дает мне желаемый результат.
Ну, я думаю, это должно быть просто, но я чего-то не хватает.
Как я могу отсортировать массив numpy в порядке убывания?
Вы должны использовать 'np.argsort (A, ось = 1) [:, :: - 1]'. Используя только '[:: - 1]' меняет ось 0: вы хотите повернуть ось 1. –
Я правильно понял, что 'As' - это не отсортированная версия' A' в вашем верхнем примере, а отсортированная версия другая матрица? – Swier
Это аргумент сортированной версии 'A'. @Swier – Ribz