scipy.stats.

sigmaclip#

scipy.stats.sigmaclip(a, низкий=4.0, высокий=4.0)[источник]#

Выполнить итеративное сигма-отсечение элементов массива.

Начиная с полной выборки, все элементы вне критического диапазона удаляются, т.е. все элементы входного массива c которые удовлетворяют любому из следующих условий:

c < mean(c) - std(c)*low
c > mean(c) + std(c)*high

Итерация продолжается с обновлённой выборкой, пока нет элементов за пределами (обновлённого) диапазона.

Параметры:
aarray_like

Массив данных, будет сведён в одномерный, если не является таковым.

низкийfloat, опционально

Нижний граничный коэффициент сигма-отсечения. По умолчанию 4.

высокийfloat, опционально

Верхний граничный фактор сигма-отсечения. По умолчанию — 4.

Возвращает:
обрезанныйndarray

Входной массив с удалёнными обрезанными элементами.

lowerfloat

Нижнее пороговое значение, используемое для отсечения.

upperfloat

Верхнее пороговое значение, используемое для отсечения.

Примеры

>>> import numpy as np
>>> from scipy.stats import sigmaclip
>>> a = np.concatenate((np.linspace(9.5, 10.5, 31),
...                     np.linspace(0, 20, 5)))
>>> fact = 1.5
>>> c, low, upp = sigmaclip(a, fact, fact)
>>> c
array([  9.96666667,  10.        ,  10.03333333,  10.        ])
>>> c.var(), c.std()
(0.00055555555555555165, 0.023570226039551501)
>>> low, c.mean() - fact*c.std(), c.min()
(9.9646446609406727, 9.9646446609406727, 9.9666666666666668)
>>> upp, c.mean() + fact*c.std(), c.max()
(10.035355339059327, 10.035355339059327, 10.033333333333333)
>>> a = np.concatenate((np.linspace(9.5, 10.5, 11),
...                     np.linspace(-100, -50, 3)))
>>> c, low, upp = sigmaclip(a, 1.8, 1.8)
>>> (c == np.linspace(9.5, 10.5, 11)).all()
True