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, 浮點數元組}, 選項性
代表陣列每一側要削減的百分比的元組,相對於未遮罩資料的數量,為介於 0. 和 1. 之間的浮點數。註記 n 為修剪前未遮罩資料的數量,第 (n*limits[0]) 個最小資料和第 (n*limits[1]) 個最大資料會被遮罩,而修剪後未遮罩資料的總數為 n*(1.-sum(limits))。其中一個 limit 的值可以設定為 None,以表示開放區間。
- inclusive{(True, True) 元組}, 選項性
元組,指示每一側被遮罩的資料數量應該被截斷 (True) 還是四捨五入 (False)。
- inplace{False, True}, 選項性
是否就地進行 winsorize (True) 或使用副本 (False)。
- axis{None, 整數}, 選項性
沿著哪個軸修剪。如果為 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)