1. ホーム
  2. python

[解決済み] リストから外れ値を取り除くnumpyのビルトインはありますか?

2022-07-28 05:16:59

質問

以下のようなことを行う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 のように)。

どのように解決するのですか?

この方法は、あなたとほぼ同じですが、より多くのnumpyst(また、numpy配列のみ上で動作する)です。

def reject_outliers(data, m=2):
    return data[abs(data - np.mean(data)) < m * np.std(data)]