質問

私はこのフォームでPythonで配列の平均値を計算したいと思います:

Matrice = [1, 2, None]

私はちょうど私のNone値がnumpy.mean計算で無視したいのですが、私はそれを行う方法を見つけ出すことはできません。

役に立ちましたか?

解決

あなたはマスクされた配列を探しています。ここでは一例です。

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

残念ながら、マスクされた配列は徹底的にnumpyのではサポートされていないので、あなたは、それらを使って行うことができないことができるものを見るために見て回るようになってきました。

他のヒント

あなたはそのためにscipyのダウンロードを使用することができます:

import scipy.stats.stats as st
m=st.nanmean(vec)

は、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を無視する結果を平均化

また、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は計算に欠損値を表すために使用されてもよい。

実は、これはしかし、そう用事、平均()関数では動作しません。 :)

In [20]: mean([1, 2, NaN])
Out[20]: nan

また、それはまた、0を非真のオブジェクトをフィルタリングし、それにNoneを渡していない、フィルタを使用することができ、:D だから、あなたも0を必要といけないときにそれを使用します。

>>> filter(None,[1, 2, None])
[1, 2]

あなたは「アップキャスト」numpyのののfloat64のDTYPEに配列をすることができますし、次の例のようにnumpyののnanmeanメソッドを使用します:

import numpy as np

arr = [1,2,3, None]
arr2 = np.array(arr, dtype=np.float64)
print(arr2) # [ 1.  2.  3. nan]
print(np.nanmean(arr2)) # 2.0

np.mean(MATRICE [MATRICE!=なし])

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top