scipy.stats.mstats.winsorize

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

返回输入数组的Winsorized版本。

(限制 [0] )将最低值设置为(限制 [0] 第几个百分位数,和(限制 [1] )将最高值设置为(1-限制 [1] )第几个百分位数。将跳过屏蔽值。

参数
a序列

输入数组。

limits{无,浮点数组},可选

要在数组的每一侧剪切的百分比的元组(相对于未屏蔽数据的数量),在0之间浮动。以及1.注意到n个修剪前的未屏蔽数据的数目,(n<sup>n</sup>) [限制[0])个最小数据和第(n] 限制 [1] )个最大的数据被屏蔽,并且在修整之后的未屏蔽数据的总数是n*(1.-sum(限制))一个限制的值可以被设置为无以指示开放间隔。

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

指示应截断(True)还是四舍五入(False)每一端被屏蔽的数据数的元组。

inplace{False,True},可选

就地Winsorize(True)还是使用副本(False)

axis{无,int},可选

要修剪的轴。如果没有,则会修剪整个数组,但其形状保持不变。

nan_policy{‘Propagate’,‘RAISE’,‘OMIT’},可选

定义输入包含NaN时的处理方式。以下选项可用(默认值为‘Propagate’):

  • ‘Propagate’:允许NaN值,并可能覆盖或传播它们

  • “raise”:引发错误

  • ‘omit’:执行计算时忽略NaN值

注意事项

此函数用于通过限制极值来减少可能的虚假异常值的影响。

示例

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