如何在python

时间:2017-03-28 05:09:08

标签: python numpy

给定一组数字,我想删除异常值,同时保留95%的数据点总数。例如。范围(0,100,1)将变为范围(2,98,1)。

例如,如果数据类似于

[0.01,0.02,4,5,7,3,1,4,6,7,10000,10002] -> [4,5,7,3,1,4,6,7]

为此目的,Python标准库或Numpy中是否有任何函数?

1 个答案:

答案 0 :(得分:0)

听起来您有兴趣过滤掉median absolute deviation或MAD的95%以内的数据。

该数据集的MAD是2.5(而std偏差> 3000)。我们可以使用它来过滤超过2个中值偏差的点(收集约95%)

import numpy as np

data = np.array([0.01,0.02,4,5,7,3,1,4,6,7,10000,10002])
deviations = 2

d = np.abs(data - np.median(data))
med_abs_dev = np.median(d)
s = d / med_abs_dev
filtered = data[s < deviations]
# [ 0.01  0.02  4.    5.    7.    3.    1.    4.    6.    7.  ]