28

次の形式で Python の配列の平均を計算したいと思います。

Matrice = [1, 2, None]

None計算で値を無視したいのですが、そのnumpy.mean方法がわかりません。

4

7 に答える 7

11

マスクされた配列を探しています。これが例です。

import numpy.ma as ma
a = ma.array([1, 2, None], mask = [0, 0, 1])
print "average =", ma.average(a)

上記のリンク先のnumpyのドキュメントから、「numpy.maモジュールは、マスク付きのデータ配列をサポートするnumpyのほぼ同等の代替品を提供します。」

于 2009-06-07T18:10:31.327 に答える
5

そのためにscipyを使用できます:

import scipy.stats.stats as st
m=st.nanmean(vec)
于 2011-11-22T22:15:38.557 に答える
5

numpy は使用していませんが、標準の python では、Noneリスト内包表記またはフィルター関数を使用して除外できます

>>> [i for i in [1, 2, None] if i != None]
[1, 2]
>>> filter(lambda x: x != None, [1, 2, None])
[1, 2]

結果を平均して、None

于 2009-06-07T17:28:06.183 に答える
3

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])

実際、それはクラッジでさえないかもしれません。 ウィキペディアは次のように述べています。

NaN は、計算で欠損値を表すために使用できます。

実際には、これは mean() 関数では機能しませんが、気にしないでください。:)

In [20]: mean([1, 2, NaN])
Out[20]: nan
于 2009-12-06T02:26:13.187 に答える
2

フィルターを使用して、None を渡すこともできます。True 以外のオブジェクトもフィルター処理されます。0 も使用できます。:D したがって、0 も必要ない場合に使用します。

>>> filter(None,[1, 2, None])
[1, 2]
于 2009-12-06T02:30:31.587 に答える