scipy.stats.mstats.
winsorize#
- scipy.stats.mstats.winsorize(a, limits=None, inclusive=(True, True), inplace=False, axis=None, nan_policy='propagate')[source]#
返回输入数组的 Winsorized 版本。
第 (limits[0]) 个最低值设置为第 (limits[0]) 个百分位数,第 (limits[1]) 个最高值设置为第 (1 - limits[1]) 个百分位数。跳过掩码值。
- 参数:
- a序列
输入数组。
- limits{None, float 元组}, 可选
要在数组的每一侧切割的百分比的元组,相对于未掩码数据的数量,作为 0. 和 1 之间的浮点数。记 n 为修剪前未掩码数据的数量,则第 (n*limits[0]) 个最小数据和第 (n*limits[1]) 个最大数据被掩码,修剪后未掩码数据的总数为 n*(1.-sum(limits)) 一个限制的值可以设置为 None 以指示一个开放区间。
- inclusive{(True, True) 元组}, 可选
指示每一侧要掩码的数据数量应被截断 (True) 还是四舍五入 (False) 的元组。
- inplace{False, True}, 可选
是否进行就地 Winsorize (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%(即,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)