[Numpy-discussion] Why NaN?

Robert Kern robert.kern@gmail....
Tue Aug 4 11:51:56 CDT 2009


On Tue, Aug 4, 2009 at 11:46, Gökhan Sever<gokhansever@gmail.com> 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)]

Yeah, NaN != NaN. It's a feature, not a bug. Use np.ma.masked_invalid(c).mean().

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco


More information about the NumPy-Discussion mailing list