[Numpy-discussion] the difference of np.nan, np.NaN, np.NAN?

David Cournapeau cournape at gmail.com
Fri Oct 14 07:44:29 EDT 2011


On Fri, Oct 14, 2011 at 11:53 AM, Olivier Delalleau <shish at keba.be> wrote:
> 2011/10/14 Matthew Brett <matthew.brett at gmail.com>
>>
>> Hi,
>>
>> On Fri, Oct 14, 2011 at 4:33 AM, Chao YUE <chaoyuejoy at gmail.com> wrote:
>> > Dear all,
>> >
>> > is there any difference between np.nan, np.NaN and np.NAN? they really
>> > confuse me....
>> > they are all Not a Number?
>> >
>> > In [75]: np.nan==np.NaN
>> > Out[75]: False
>> >
>> > In [77]: np.NaN==np.NAN
>> > Out[77]: False
>>
>> The nan value is not equal to itself:
>>
>> In [70]: np.nan == np.nan
>> Out[70]: False
>>
>> See:
>>
>> http://en.wikipedia.org/wiki/NaN
>>
>> But:
>>
>> In [71]: np.isnan(np.nan)
>> Out[71]: True
>>
>> In [72]: np.isnan(np.NAN)
>> Out[72]: True
>>
>> In [73]: np.isnan(np.NaN)
>> Out[73]: True
>>
>> Best,
>>
>> Matthew
>
> Also on my computer:
>>>> numpy.nan is numpy.NAN
> True
>>>> numpy.nan is numpy.NaN
> True
>
> So they really are the same. But you shouldn't rely on this (always use
> numpy.isnan to test for nan-ness).

They are the same, just not equal to each other  (or even to
themselves). As for the different NaN names in numpy namespace, I
think this is for historical reason (maybe because python itself used
to print nan differently on different platforms, although this should
not be the case anymore since python 2.6).

David



More information about the NumPy-Discussion mailing list