numpy数组的平均值返回NaN

Asi*_*sif 7 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
Run Code Online (Sandbox Code Playgroud)

jak*_*vdp 6

试试这个:

>>> np.nanmean(ngma_heat_daily)
Run Code Online (Sandbox Code Playgroud)

此函数在取平均值之前从阵列中删除NaN值.

编辑:average(ngma_heat_daily[ngma_heat_daily != nan])不起作用的原因是因为:

>>> np.nan == np.nan
False
Run Code Online (Sandbox Code Playgroud)

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

>>> average(ngma_heat_daily[~np.isnan(ngma_heat_daily)])
Run Code Online (Sandbox Code Playgroud)

np.isnan,np.isinf和类似的函数对于这种类型的数据屏蔽非常有用.