我正在尋找一種快速高效的方法來計算一組數據的健壯,移動的尺度估計。我正在處理典型的3-400k元素的1d陣列。直到最近,我一直在使用模擬數據(沒有災難性的異常值),而優秀的Bottleneck包中的move_std函數爲我提供了很好的幫助。但是,由於我已經過渡到嘈雜的數據,標準不再有足夠的表現以至於有用。蟒蛇陣列的高效移動,健壯的尺度估計
在我用過去的很簡單biweight中等方差代碼元素的元素來處理性能欠佳分佈的問題:
def bwmv(data_array):
cent = np.median(data_array)
MAD = np.median(np.abs(data_array-cent))
u = (data_array-cent)/9./MAD
uu = u*u
I = np.asarray((uu <= 1.), dtype=int)
return np.sqrt(len(data_array) * np.sum((data_array-cent)**2 * (1.-uu)**4 * I)\
/(np.sum((1.-uu) * (1.-5*uu) * I)**2))
但是我現在有工作陣列足夠大,這是非常緩慢的。有沒有人知道提供這樣一個估算器的軟件包,或者有什麼建議如何以快速有效的方式來實現?