2016-03-25 152 views
6

我有一个包含330,000多行的np.array。我只是尝试取其平均值,并返回NaN。即使我试图滤除阵列中任何潜在的NaN值(不应该有任何反正),平均回报为NaN。我在做什么非常古怪的事情?numpy数组的平均值返回NaN

我的代码是在这里:

average(ngma_heat_daily) 
Out[70]: nan 

average(ngma_heat_daily[ngma_heat_daily != nan]) 
Out[71]: nan 

回答

5

试试这个:

>>> np.nanmean(ngma_heat_daily) 

此功能下降的NaN取均值之前,从您的数组值。

编辑:原因average(ngma_heat_daily[ngma_heat_daily != nan])行不通就是因为这一点:

>>> np.nan == np.nan 
False 

根据IEEE浮点标准不同,NaN不等于自身!你可以这样做,而不是实现相同的想法:

>>> average(ngma_heat_daily[~np.isnan(ngma_heat_daily)]) 

np.isnannp.isinf,和类似的功能是这类数据屏蔽的非常有用的。

+0

工作正常!你能解释一下平均的问题吗?我有另一个16k条目的数组(从相同的原始数据源生成)可以很好地处理average()方法。 – Asif

+0

刚刚看到你的编辑与解释。谢谢! – Asif