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