Есть ли встроенный numpy, чтобы сделать что-то вроде следующего? То есть, возьмите список d
и верните список filtered_d
с любыми удаленными элементами, удаленными на основе некоторого предполагаемого распределения точек в d
.
import numpy as np
def reject_outliers(data):
m = 2
u = np.mean(data)
s = np.std(data)
filtered = [e for e in data if (u - 2 * s < e < u + 2 * s)]
return filtered
>>> d = [2,4,5,1,6,5,40]
>>> filtered_d = reject_outliers(d)
>>> print filtered_d
[2,4,5,1,6,5]
Я говорю "что-то вроде", потому что функция может допускать различные распределения (пуассоны, гауссовы и т.д.) и различные пороги выбросов в этих дистрибутивах (например, m
, которые я использовал здесь).