Метод argsort класса ndarray
Метод argsort возвращает массив индексов, которые упорядочивают исходный массив по возрастанию значений. Первым параметром можно указать ось (axis), вдоль которой выполняется сортировка. Вторым параметром можно указать алгоритм сортировки (kind). Третьим параметром можно указать направление сортировки (order). Метод возвращает массив индексов, не изменяя исходный массив.
Синтаксис
arr.argsort([axis], [kind], [order])
Пример
Получим индексы для сортировки одномерного массива:
import numpy as np
arr = np.array([3, 1, 4, 1, 5, 9, 2])
idx = arr.argsort()
print("Indices:", idx)
print("Sorted array:", arr[idx])
Результат выполнения кода:
Indices: [1 3 6 0 2 4 5]
Sorted array: [1 1 2 3 4 5 9]
Пример
Сортировка по убыванию с использованием среза:
import numpy as np
arr = np.array([3, 1, 4, 1, 5, 9, 2])
idx = arr.argsort()[::-1]
print("Indices:", idx)
print("Sorted descending:", arr[idx])
Результат выполнения кода:
Indices: [5 4 2 0 6 1 3]
Sorted descending: [9 5 4 3 2 1 1]
Пример
Сортировка двумерного массива вдоль строк:
import numpy as np
arr = np.array([[3, 1, 4], [1, 5, 9], [2, 6, 5]])
idx = arr.argsort(axis=1)
print("Indices:")
print(idx)
print("Sorted rows:")
for i in range(arr.shape[0]):
print(arr[i][idx[i]])
Результат выполнения кода:
Indices:
[[1 0 2]
[0 1 2]
[0 2 1]]
Sorted rows:
[1 3 4]
[1 5 9]
[2 5 6]
Пример
Сортировка вдоль столбцов с использованием алгоритма 'stable':
import numpy as np
arr = np.array([[3, 1, 4], [1, 5, 9], [2, 6, 5]])
idx = arr.argsort(axis=0, kind='stable')
print("Indices:")
print(idx)
Результат выполнения кода:
Indices:
[[1 0 0]
[2 1 2]
[0 2 1]]