私は、このフォームではPythonで配列の平均値を計算したいと思います:Pythonでnumpyを 'None'の値で使用する方法は?
Matrice = [1, 2, None]
私はちょうど私のNone
値はnumpy.mean
計算で無視されますが、私はどのように把握することはできませんしたいのですがそれをやる。
私は、このフォームではPythonで配列の平均値を計算したいと思います:Pythonでnumpyを 'None'の値で使用する方法は?
Matrice = [1, 2, None]
私はちょうど私のNone
値はnumpy.mean
計算で無視されますが、私はどのように把握することはできませんしたいのですがそれをやる。
を無視し、結果を平均化することができますmasked arrays。ここに例があります。
import MA
a = MA.array([1, 2, None], mask = [0, 0, 1])
print "average =", MA.average(a)
残念ながら、マスクされた配列は徹底的にnumpyのではサポートされていないので、あなたは、それらと行うことができないことができるものを見るために見て回るようになってきました。
はnumpyのを使用していないが、標準のpythonであなたはリスト内包 やフィルタ機能
>>> [i for i in [1, 2, None] if i != None]
[1, 2]
>>> filter(lambda x: x != None, [1, 2, None])
[1, 2]
を使用してNone
をフィルタリングして、あなたが探しているNone
'x!= None'は通常' x is None'と書かれています(PEP 8: "Noneのようなシングルトンとの比較は常に 'is'や 'not'で行われるべきで、等価演算子ではありません。) – EOL
また、NaNやInfなどの値を使用してクラッジすることもできます。
In [1]: array([1, 2, None])
Out[1]: array([1, 2, None], dtype=object)
In [2]: array([1, 2, NaN])
Out[2]: array([ 1., 2., NaN])
実際、それはクルージングではないかもしれません。 Wikipedia says:
NaNを使用して計算に欠損値を表すことができます。
実際には、これはmean()関数では機能しませんので、気にしないでください。 :)あなたはまた、0また、フィルタを使用し、それにNoneを渡していない、それが非真のオブジェクトをフィルタしますすることができます
In [20]: mean([1, 2, NaN])
Out[20]: nan
実際、すべてのNaN以外の値を明示的に選択する 'mean(a [〜isnan(a)])'が機能します。 – u0b34a0f6ae
@kaizerコメントは宝石です。素晴らしいソリューション、ありがとう! – Agos
:D だから、あなたも0を必要といけないときにそれを使用しています。
>>> filter(None,[1, 2, None])
[1, 2]
1:この質問は、値が時々NULL可能データベースからインポートされた配列のために特に関連することができます。 – EOL