scipy.stats.mstats.

温莎化#

scipy.stats.mstats.winsorize(a, limits=None, inclusive=(True, True), inplace=False, axis=None, nan_policy='propagate')[源代码]#

返回输入数组的温莎化版本。

将(limits[0])个最低值设置为第(limits[0])个百分位数,并将(limits[1])个最高值设置为第(1 - limits[1])个百分位数。跳过蒙版值。

参数:
a序列

输入数组。

limits{None, float 元组}, 可选

相对于无蒙版数据的数量,元组指定了数组中每个侧面的截断百分比,为介于 0 到 1 之间的 float 数。标记 n 为修剪前无蒙版数据的数量,则将第 (n*limits[0]) 个最小数据和第 (n*limits[1]) 个最大数据进行蒙版,修剪后无蒙版数据总数为 n*(1.-sum(limits)) 可将一个限制的值设置为 None 以表示打开区间。

inclusive{(True, True) 元组}, 可选

指示每侧被掩盖数据的数量应当被截断(True)还是四舍五入(False)的元组。

inplace{False, True}, 可选

是否就地进行温莎化(True)或使用副本(False)

axis{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% 的最高值(即 910)被替换。

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