Чтобы использовать np.argsort для сортировки в порядке убывания в Python, сначала примените np.argsort к нашему массиву, а затем либо инвертируйте результат, используя срез массива([::-1]), либо инвертируйте массив перед сортировкой.

Для инвертирования отсортируйте массив с помощью np.argsort, а затем переверните полученные индексы.

Содержание

Аргументная сортировка

Функция NumPy np.argsort в Python — это эффективный способ получить индексы массива, которые приводят к отсортированному порядку. Это особенно полезно в ситуациях, когда мы хотим отсортировать массив, но также необходимо отслеживать исходные положения элементов.

Синтаксис:

numpy.argsort(arr, axis=-1, kind=None, order=None)

Здесь:

arr Массив необходимо отсортировать.
axis Ось, по которой производится сортировка. Если -1, массив Python выравнивается перед сортировкой.
kind Указывает алгоритм сортировки(«быстрая сортировка», «сортировка слиянием», «кучная сортировка», «стабильный»).
order Если arr — это массив структурированных типов данных в Python, этот аргумент указывает поле для сравнения.

Возвращаемое значение:

Когда мы применяем np.argsort() в Python к массиву, он вычисляет индексы элементов массива в отсортированном порядке. Однако важно отметить, что это не меняет исходный массив.

Вместо этого он предоставляет способ доступа к элементам в том порядке, в котором можно отсортировать массив в Python.

По умолчанию функция np.argsort() в Python сортирует в порядке возрастания. Первый индекс в возвращаемом массиве относится к наименьшему элементу, второй индекс — ко второму наименьшему элементу и т. д.

Пример. Давайте рассмотрим пример, в котором у нас есть массив чисел, и мы хотим отсортировать его в порядке возрастания, используя np.argsort() в Python.

Эта функция не сортирует массив напрямую; вместо этого он возвращает индексы массива в том порядке, в котором они были бы, если бы массив был отсортирован.

import numpy as np

arr = np.array([10, 5, 8, 1, 7])
sorted_indices = np.argsort(arr)
print("Indices that would sort the array:", sorted_indices)
sorted_arr = arr[sorted_indices]
print("Sorted array:", sorted_arr)

Выход:

Indices that would sort the array: [3 1 4 2 0]
Sorted array: [ 1  5  7  8 10]

После реализации кода в редакторе Pycharm снимок экрана указан ниже.

сортировка аргументов в Python

Как использовать

Хотя np.argsort в Python естественным образом сортирует в порядке возрастания, существует два способа использовать np.argsort в порядке убывания в Python:

  1. Инвертирование результата.
  2. Отрицание массива.

1. Путем инвертирования результата

После применения np.argsort инвертируйте порядок результата. Это можно сделать с помощью разрезания массива. Например:

import numpy as np

arr = np.array([3, 1, 4, 1, 5, 9, 2])
ascending_order_indices = np.argsort(arr)
descending_order_indices = ascending_order_indices[::-1]
arr_descending_order = arr[descending_order_indices]
print(arr_descending_order)

Вывод: Здесь [::-1] переворачивает массив в Python, превращая восходящий порядок в нисходящий.

[9 5 4 3 2 1 1]

Ниже приведен скриншот после реализации кода в редакторе Pycharm.

Путем инвертирования результата

2. Путем отрицания массива

Другой подход — инвертировать значения массива, если массив состоит из числовых данных в Python. Таким образом, сначала сортируется наибольшее отрицательное значение (которое является наименьшим положительным значением). Таким образом, мы используем np.argsort в порядке убывания в Python. Например:

import numpy as np

arr = np.array([3, 1, 4, 1, 5, 9, 2])
descending_order_indices = np.argsort(-arr)
arr_descending_order = arr[descending_order_indices]
print(arr_descending_order)

Вывод: отрицая arr, np.argsort в Python сортирует так, как если бы он был отсортирован в порядке убывания.

[9 5 4 3 2 1 1]

После выполнения кода в Pycharm результат можно увидеть на снимке экрана ниже.

Путем отрицания массива

Добавить комментарий