Сортировка массива по столбцу в NumPy

  1. NumPy Сортировка массива по столбцу с помощью функции numpy.sort()
  2. NumPy Сортировка массива по столбцу с помощью функции numpy.argsort()

В этом руководстве будут представлены методы сортировки массива по столбцу в NumPy.

NumPy Сортировка массива по столбцу с помощью функции numpy.sort()

Предположим, у нас есть 2D-массив NumPy, и мы хотим отсортировать строки в соответствии с порядком элементов внутри определенного столбца. Мы можем сделать это с помощью функции numpy.sort(). Функция numpy.sort() сортирует массив NumPy. Мы можем указать индекс столбца и ось в параметрах order и axis функции numpy.sort(). Нам нужно преобразовать наш массив в структурированный массив с полями для использования функции numpy.sort(). Для этого мы можем использовать функцию numpy.view(). См. Следующий пример кода.

import numpy as np

array = np.array([[1,1,2],[0,0,1],[1,1,3]])
print("Array before sorting\n",array)

array.view('i8,i8,i8').sort(order=['f1'], axis=0)
print("Array after sorting\n",array)

Выход:

Array before sorting
 [[1 1 2]
 [0 0 1]
 [1 1 3]]
Array after sorting
 [[0 0 1]
 [1 1 2]
 [1 1 3]]

Сначала мы создали 2D массив NumPy array с помощью функции np.array(). Затем мы преобразовали массив в структурированный массив с помощью функции array.view(). После этого мы отсортировали массив по второму столбцу с помощью функции sort(order=['f1'], axis=0). Здесь f1 относится ко второй колонке.

NumPy Сортировка массива по столбцу с помощью функции numpy.argsort()

Другой более простой способ сделать то же самое, что и в предыдущем подходе, - использовать функцию numpy.argsort(). Функция numpy.argsort() также используется для сортировки элементов массива. Он очень похож на предыдущий, но нам не нужно использовать функцию numpy.view(), чтобы этот подход работал. Функция numpy.argsort() возвращает индексы, которые будут использоваться для сортировки массива. См. Следующий пример кода.

import numpy as np

array = np.array([[1,1,2],[0,0,1],[1,1,3]])
print("Array before sorting\n",array)

array[array[:, 1].argsort()]
print("Array after sorting\n",array)

Выход:

Array before sorting
 [[1 1 2]
 [0 0 1]
 [1 1 3]]
Array after sorting
 [[0 0 1]
 [1 1 2]
 [1 1 3]]

Сначала мы создали двумерный массив NumPy array с помощью функции np.array(). Затем мы использовали срез массива, чтобы указать только второй столбец array, и отсортировали его с помощью функции np.argsort(). Мы использовали индексы, возвращаемые функцией np.argsort(), для сортировки array.