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

David Cournapeau cournape@gmail....
Fri Oct 14 06:44:29 CDT 2011


On Fri, Oct 14, 2011 at 11:53 AM, Olivier Delalleau <shish@keba.be> wrote:
> 2011/10/14 Matthew Brett <matthew.brett@gmail.com>
>>
>> Hi,
>>
>> On Fri, Oct 14, 2011 at 4:33 AM, Chao YUE <chaoyuejoy@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