scipy.stats.

rankdata#

scipy.stats.rankdata(a, метод='average', *, ось=None, nan_policy='propagate')[источник]#

Назначьте ранги данным, корректно обрабатывая связи.

По умолчанию (axis=None), массив данных сначала выравнивается, и возвращается плоский массив рангов. При необходимости преобразуйте массив рангов обратно к форме исходного массива данных (см. Примеры).

Ранги начинаются с 1. метод аргумент управляет тем, как ранги назначаются равным значениям. См. [1] для дальнейшего обсуждения методов ранжирования.

Параметры:
aarray_like

Массив значений для ранжирования.

метод{‘average’, ‘min’, ‘max’, ‘dense’, ‘ordinal’}, необязательно

Метод, используемый для присвоения рангов связанным элементам. Доступны следующие методы (по умолчанию ‘average’):

  • 'average': Каждому значению присваивается среднее рангов, которые были бы назначены всем связанным значениям.

  • ‘min’: Минимальный из рангов, которые были бы присвоены всем связанным значениям, присваивается каждому значению. (Это также называется «соревновательным» ранжированием.)

  • ‘max’: Максимальный из рангов, которые были бы присвоены всем связанным значениям, присваивается каждому значению.

  • ‘dense’: Как ‘min’, но ранг следующего по величине элемента присваивается сразу после рангов, назначенных связанным элементам.

  • 'ordinal': Все значения получают уникальный ранг, соответствующий порядку, в котором значения встречаются в a.

ось{None, int}, необязательно

Ось, вдоль которой выполняется ранжирование. Если None, массив данных сначала сглаживается.

nan_policy{'propagate', 'omit', 'raise'}, опционально

Определяет, как обрабатывать входные данные, содержащие nan. Доступны следующие варианты (по умолчанию 'propagate'):

  • ‘propagate’: распространяет nan через расчёт ранга

  • 'omit': выполняет вычисления, игнорируя значения nan

  • ‘raise’: вызывает ошибку

Примечание

Когда nan_policy равно ‘propagate’, вывод представляет собой массив все nans, потому что ранги относительно nans во входных данных не определены. Когда nan_policy равно 'omit', NaN в a игнорируются при ранжировании остальных значений, и соответствующие позиции вывода равны nan.

Добавлено в версии 1.10.

Возвращает:
рангиndarray

Массив размером, равным размеру a, содержащий ранговые оценки.

Примечания

rankdata имеет экспериментальную поддержку совместимых с Python Array API Standard бэкендов в дополнение к NumPy. Пожалуйста, рассмотрите тестирование этих функций, установив переменную окружения SCIPY_ARRAY_API=1 и предоставление массивов CuPy, PyTorch, JAX или Dask в качестве аргументов массива. Поддерживаются следующие комбинации бэкенда и устройства (или других возможностей).

Библиотека

CPU

GPU

NumPy

н/д

CuPy

н/д

PyTorch

JAX

⚠️ нет JIT

⚠️ нет JIT

Dask

н/д

См. Поддержка стандарта array API для получения дополнительной информации.

Ссылки

[1]

“Ранжирование”, https://en.wikipedia.org/wiki/Ranking

Примеры

>>> import numpy as np
>>> from scipy.stats import rankdata
>>> rankdata([0, 2, 3, 2])
array([ 1. ,  2.5,  4. ,  2.5])
>>> rankdata([0, 2, 3, 2], method='min')
array([ 1,  2,  4,  2])
>>> rankdata([0, 2, 3, 2], method='max')
array([ 1,  3,  4,  3])
>>> rankdata([0, 2, 3, 2], method='dense')
array([ 1,  2,  3,  2])
>>> rankdata([0, 2, 3, 2], method='ordinal')
array([ 1,  2,  4,  3])
>>> rankdata([[0, 2], [3, 2]]).reshape(2,2)
array([[1. , 2.5],
      [4. , 2.5]])
>>> rankdata([[0, 2, 2], [3, 2, 5]], axis=1)
array([[1. , 2.5, 2.5],
       [2. , 1. , 3. ]])
>>> rankdata([0, 2, 3, np.nan, -2, np.nan], nan_policy="propagate")
array([nan, nan, nan, nan, nan, nan])
>>> rankdata([0, 2, 3, np.nan, -2, np.nan], nan_policy="omit")
array([ 2.,  3.,  4., nan,  1., nan])