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

Функция partition

Функция partition выполняет частичное упорядочивание элементов массива. Она гарантирует, что элемент с индексом kth находится на той позиции, которую он бы занимал в полностью отсортированном массиве. При этом все элементы слева от него меньше или равны, а все элементы справа - больше или равны этому значению. Первым параметром функция принимает массив, вторым - индекс или список индексов, которые должны оказаться на своих местах.

Синтаксис

np.partition(a, kth, [axis], [kind], [order])

Параметры функции:

  • a - входной массив, который необходимо частично упорядочить
  • kth - индекс или список индексов, которые должны оказаться на своих местах
  • axis - ось, вдоль которой производится упорядочивание (по умолчанию -1)
  • kind - алгоритм сортировки ('introselect' по умолчанию)
  • order - поле для сортировки структурированных массивов

Пример

Давайте выполним частичное упорядочивание одномерного массива так, чтобы элемент с индексом 3 оказался на своей позиции:

import numpy as np arr = np.array([7, 1, 5, 3, 9, 2, 8, 4, 6]) res = np.partition(arr, 3) print(res)

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

[2 1 3 4 9 5 8 7 6]

Четвёртый элемент (с индексом 3) имеет значение 4 - именно таким он был бы в полностью отсортированном массиве. Слева от него находятся элементы меньше или равные 4, справа - больше или равные.

Пример

Давайте укажем несколько индексов, которые должны оказаться на своих местах:

import numpy as np arr = np.array([7, 1, 5, 3, 9, 2, 8, 4, 6]) res = np.partition(arr, [2, 5]) print(res)

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

[2 1 3 4 5 6 8 7 9]

Элементы с индексами 2 и 5 заняли свои позиции: на третьем месте находится значение 3, на шестом - значение 6. Все элементы между ними также частично упорядочены.

Пример

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

import numpy as np arr = np.array([[7, 1, 5], [3, 9, 2], [8, 4, 6]]) res = np.partition(arr, 1, axis=1) print(res)

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

[[1 5 7] [2 3 9] [4 6 8]]

В каждой строке элемент с индексом 1 оказался на своей позиции. Слева от него находятся меньшие элементы, справа - большие.

Пример

Давайте используем метод partition для массива NumPy:

import numpy as np arr = np.array([7, 1, 5, 3, 9, 2, 8, 4, 6]) arr.partition(3) print(arr)

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

[2 1 3 4 9 5 8 7 6]

Метод partition изменяет массив на месте, в отличие от функции partition, которая возвращает новый массив.

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

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