numpy数组的平均值返回NaN

时间:2016-03-25 16:38:06

标签: python arrays numpy

我有一个超过330,000行的np.array。我只是尝试取其平均值并返回NaN。即使我试图过滤掉我的数组中任何潜在的NaN值(不管怎样都不应该),平均值会返回NaN。我做的事情很古怪吗?

我的代码在这里:

average(ngma_heat_daily)
Out[70]: nan

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

2 个答案:

答案 0 :(得分: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和类似函数对于此类数据屏蔽非常有用。

答案 1 :(得分:1)

此外,还有一个名为nanmedian的函数,它会忽略NaN值。该函数的签名为:numpy.nanmedian(a, axis=None, out=None, overwrite_input=False, keepdims=<no value>)