[Numpy-discussion] Sign of NaN

Allan Haldane allanhaldane at gmail.com
Tue Sep 29 11:44:10 EDT 2015



On 09/29/2015 11:39 AM, josef.pktd at gmail.com wrote:
> 
> 
> On Tue, Sep 29, 2015 at 11:25 AM, Anne Archibald <archibald at astron.nl
> <mailto:archibald at astron.nl>> wrote:
> 
>     IEEE 754 has signum(NaN)->NaN. So does np.sign on floating-point
>     arrays. Why should it be different for object arrays?
> 
>     Anne
> 
>     P.S. If you want exceptions when NaNs appear, that's what np.seterr
>     is for. -A
> 
> 
> 
> I also think NaN should be treated the same way as floating point
> numbers (whatever that is). Otherwise it is difficult to remember when
> nan is essentially a float dtype or another dtype.  
> (given that float is the smallest dtype that can hold a nan)
> 

Note that I've reimplemented np.sign for object arrays along these lines
in this open PR:
https://github.com/numpy/numpy/pull/6320

That PR recursively uses the np.sign ufunc to evaluate object arrays
containing float and complex numbers. This way the behavior on object
arrays is identical to float/complex arrays.

Here is what the np.sign ufunc does (for arbitrary x):

    np.sign(np.nan)              ->  nan
    np.sign(complex(np.nan, x))  ->  complex(nan, 0)
    np.sign(complex(x, np.nan))  ->  complex(nan, 0)

Allan



More information about the NumPy-Discussion mailing list