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