scipy.stats.mstats.

winsorize#

scipy.stats.mstats.winsorize(a, пределы=None, inclusive=(True, True), inplace=False, ось=None, nan_policy='propagate')[источник]#

Возвращает уинсоризованную версию входного массива.

Наименьшие (limits[0])-е значения устанавливаются в (limits[0])-й процентиль, а наибольшие (limits[1])-е значения устанавливаются в (1 - limits[1])-й процентиль. Маскированные значения пропускаются.

Параметры:
aпоследовательность

Входной массив.

пределы{None, tuple of float}, опционально

Кортеж процентов для обрезки с каждой стороны массива относительно количества немаркированных данных, в виде чисел с плавающей точкой от 0. до 1. Обозначив n количество немаркированных данных до обрезки, (n*limits[0])-е наименьшее значение и (n*limits[1])-е наибольшее значение маркируются, а общее количество немаркированных данных после обрезки составляет n*(1.-sum(limits)). Значение одного предела может быть установлено в None, чтобы указать открытый интервал.

inclusive{(True, True) кортеж}, опционально

Кортеж, указывающий, должно ли количество маскируемых данных с каждой стороны быть усечённым (True) или округлённым (False).

inplace{False, True}, опционально

Производить ли винсоризацию на месте (True) или использовать копию (False)

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

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

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

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

  • ‘propagate’: разрешает значения nan и может перезаписывать или распространять их

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

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

Примечания

Эта функция применяется для уменьшения влияния возможных ложных выбросов путем ограничения экстремальных значений.

Примеры

>>> import numpy as np
>>> from scipy.stats.mstats import winsorize

Перемешанный массив содержит целые числа от 1 до 10.

>>> a = np.array([10, 4, 9, 8, 5, 3, 7, 2, 1, 6])

10% наименьших значений (т.е., 1) и 20% самых высоких значений (т.е., 9 и 10) заменяются.

>>> winsorize(a, limits=[0.1, 0.2])
masked_array(data=[8, 4, 8, 8, 5, 3, 7, 2, 2, 6],
             mask=False,
       fill_value=999999)