在python中使用numpy获取平均值

在python中使用numpy获取平均值,python,arrays,numpy,Python,Arrays,Numpy,如何计算数组(A)的平均值 import numpy as np A = [5 nan nan nan nan 10] M = np.mean(A[A!=nan]) does not work Any idea? 使用: 因为您无法将nan与nan进行比较: >>> np.nan == np.nan False >>> np.nan != np.nan True >>> np.isnan(np.nan) True

如何计算数组(A)的平均值

import numpy as np 
A = [5    nan    nan    nan    nan  10]
M = np.mean(A[A!=nan]) does not work
Any idea?
使用:

因为您无法将
nan
nan
进行比较:

>>> np.nan == np.nan
False
>>> np.nan != np.nan
True
>>> np.isnan(np.nan)
True

另一种可能性是:

import numpy
from scipy.stats import nanmean # nanmedian exists too, if you need it
A = numpy.array([5, numpy.nan, numpy.nan, numpy.nan, numpy.nan, 10])
print nanmean(A) # gives 7.5 as expected
我想这看起来比已经给出的其他解决方案更优雅(和可读性)

编辑:显然(@Jaime)报告说,此功能已经直接存在于最新的
numpy
(1.8)中,因此如果您拥有该版本的
numpy
,则无需再导入scipy.stats:

import numpy
A = numpy.array([5, numpy.nan, numpy.nan, numpy.nan, numpy.nan, 10])
print numpy.nanmean(A) 

第一个解决方案也适用于那些没有最新版本的
numpy
(像我一样)

numpy1.8有自己的
nanmean
功能的人,所以你甚至不需要导入scipy。@Jaime。您可以在原始问题中作为答案发布,以供将来参考…
scipy.stats.nanmean
scipy.stats.nanmedia
现在不推荐使用
numpy
函数
import numpy
A = numpy.array([5, numpy.nan, numpy.nan, numpy.nan, numpy.nan, 10])
print numpy.nanmean(A)