[Numpy-discussion] Why NaN?

Perry Greenfield perry@stsci....
Tue Aug 4 11:57:23 CDT 2009


Note that NaN generally contaminates sums and other net results (as it  
should). You should filter them out (there is more than one way to do  
that). But also note that the IEEE standard for floating point numbers  
requires NaN != Nan. Thus any attempts to find where NaNs that way is  
destined to fail. Use the function isnan() instead to generate a mask.

Perry

On Aug 4, 2009, at 12:46 PM, Gökhan Sever wrote:

> Hello,
>
> I know this has to have a very simple answer, but stuck at this very  
> moment and can't get a meaningful result out of np.mean()
>
>
> In [121]: a = array([NaN, 4, NaN, 12])
>
> In [122]: b = array([NaN, 2, NaN, 3])
>
> In [123]: c = a/b
>
> In [124]: mean(c)
> Out[124]: nan
>
> In [125]: mean a
> --------> mean(a)
> Out[125]: nan
>
> Further when I tried:
>
> In [138]: c
> Out[138]: array([ NaN,   2.,  NaN,   4.])
>
> In [139]: np.where(c==NaN)
> Out[139]: (array([], dtype=int32),)
>
>
> In [141]: mask = [c != NaN]
>
> In [142]: mask
> Out[142]: [array([ True,  True,  True,  True], dtype=bool)]
>
>
> Any ideas?
>
> -- 
> Gökhan
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion



More information about the NumPy-Discussion mailing list