Est-il un numpy builtin à rejeter les valeurs aberrantes à partir d'une liste

Est-il un numpy builtin de faire quelque chose comme ce qui suit? Qui est, prendre une liste d et de retourner une liste filtered_d avec tous les périphériques éléments supprimés selon certains supposé de la distribution des points dans 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]

Je dis "quelque chose comme" parce que la fonction peut permettre pour les différentes distributions (poisson, gauss, etc.) et en variant les valeurs aberrantes, les seuils à l'intérieur de ces distributions (comme le m j'ai utilisé ici).

  • Connexes: Peut scipy.statistiques d'identifier et d'un masque évident valeurs aberrantes?, bien que cette question semble faire face à des situations plus complexes. Pour la simple tâche que vous avez décrit, un package externe semble être exagéré.
  • Je pensais que vu le nombre d'objets internes dans la principale bibliothèque numpy qu'il était étrange qu'il n'y avait rien à faire. Il semble comme une chose assez rare pour le faire avec des brutes, des données bruitées.
InformationsquelleAutor aaren | 2012-07-27