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])