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%(即, 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)