РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
260 of 541 menu

Функция lexsort

Функция lexsort выполняет непрямую сортировку по нескольким ключам. В качестве первого аргумента функция принимает последовательность сортируемых массивов или кортеж массивов. Важно: сортировка происходит по последнему переданному ключу в первую очередь. Вторым параметром можно передать ось, по которой производится сортировка. Функция возвращает массив индексов, которые могут быть использованы для сортировки исходного массива данных.

Синтаксис

np.lexsort(keys, [axis])

Пример с одним ключом

Давайте отсортируем массив с помощью одного ключа:

import numpy as np arr = np.array([3, 1, 4, 2]) res = np.lexsort((arr,)) print(res)

Результат выполнения кода:

[1 3 0 2]

Пример сортировки по нескольким ключам

Отсортируем строки таблицы по двум столбцам. Сначала сортировка по последнему ключу, затем по первому:

import numpy as np first = np.array([2, 1, 2, 1]) second = np.array([3, 2, 1, 4]) res = np.lexsort((first, second)) print(res)

Результат выполнения кода:

[2 1 0 3]

Пример с двумерным массивом

Сортируем строки матрицы по первому столбцу, а затем по второму:

import numpy as np arr = np.array([[3, 2], [1, 4], [3, 1], [1, 3]]) res = np.lexsort((arr[:, 1], arr[:, 0])) print(res)

Результат выполнения кода:

[1 3 2 0]

Пример применения индексов к массиву

Используем полученные индексы для сортировки исходного массива:

import numpy as np names = np.array(['Anna', 'Bob', 'Anna', 'Bob']) grades = np.array([85, 92, 78, 88]) res = np.lexsort((grades, names)) sorted_names = names[res] sorted_grades = grades[res] print(sorted_names) print(sorted_grades)

Результат выполнения кода:

['Anna' 'Anna' 'Bob' 'Bob'] [78 85 88 92]

Пример с отрицательной сортировкой

Для сортировки по убыванию используем отрицательные значения ключа:

import numpy as np first = np.array([2, 1, 2, 1]) second = np.array([3, 2, 1, 4]) res = np.lexsort((-first, second)) print(res)

Результат выполнения кода:

[0 2 1 3]

Смотрите также

  • функцию sort,
    которая сортирует массив на месте
  • функцию argsort,
    которая выполняет непрямую сортировку по одному ключу
  • функцию partition,
    которая выполняет частичную сортировку массива
  • функцию searchsorted,
    которая выполняет поиск в отсортированном массиве
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить