Should numpy.sqrt(-1) return 1j rather than nan?
David Goldsmith
David.L.Goldsmith at noaa.gov
Thu Oct 12 02:23:10 CDT 2006
(Very) well said, Fernando. Thanks!
DG
Fernando Perez wrote:
> On 10/12/06, Travis Oliphant <oliphant.travis at ieee.org> wrote:
>
>
>> Why in the world does it scare you away. This makes no sense to me.
>> If you don't like the scipy version don't use it. NumPy and SciPy are
>> not the same thing.
>>
>
> I'd like to pitch in (again) on this issue, but I'll try to make sure
> that it's clear that I'm NOT arguing about sqrt() in particular, one
> way or another.
>
> It's perfectly clear that numpy != scipy to all of us. And yet, I
> think it is equally clear that the two are /very/ tightly related.
> Scipy builds on top of numpy and it directly exposes a LOT of the
> numpy API as scipy functions:
>
> In [21]: import numpy as n, scipy as s
>
> In [22]: common_names = set(dir(n)) & set(dir(s))
>
> In [23]: [getattr(n,x) is getattr(s,x) for x in common_names ].count(True)
> Out[23]: 450
>
> In [24]: len(common_names)
> Out[24]: 462
>
> That's 450 objects from numpy which are directly exposed in Scipy,
> while only 12 names are in both top-level namespaces and yet are
> different objects. Put another way, scipy is a direct wrap of 97% of
> the numpy top-level namespace. While /we/ know they are distinct
> entities, to the casual user a 97% match looks pretty close to being
> the same, especially when the non-identical things are all
> non-numerical:
>
> In [27]: [x for x in common_names if getattr(n,x) is not getattr(s,x)]
> Out[27]:
> ['pkgload',
> 'version',
> '__config__',
> '__file__',
> '__all__',
> '__doc__',
> 'show_config',
> '__version__',
> '__path__',
> '__name__',
> 'info',
> 'test']
>
> In [32]: n.__version__,s.__version__
> Out[32]: ('1.0.dev3306', '0.5.2.dev2252')
>
> Basically, at least for these versions, the top-level API of scipy is
> a strict superset of the numpy one for all practical purposes.
>
> I think it's fair to say that if we start sprinkling special cases
> where certain objects happen to have the same name but produce
> different results for the same inputs, confusion will arise.
>
> Please note that I see a valid reason for scipy.foo != numpy.foo when
> the scipy version uses code with extra features, is faster, has
> additional options, etc. But as I said in a previous message, I think
> that /for the same input/, we should really try to satisfy that
>
> numpy.foo(x) == scipy.foo(x) (which is NOT the same as 'numpy.foo is scipy.foo')
>
> within reason. Obviously the scipy version may succeed where the
> numpy one fails due to better algorithms, or be faster, etc. I'm
> talking about a general principle here.
>
> I doubt I'll be able to state my point with any more clarity, so I'll
> stop now. But I really believe that this particular aspect of
> consistency between numpy and scipy is a /very/ important one for its
> adoption in wider communities.
>
> Best,
>
> f
>
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/numpy-discussion
>
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
More information about the Numpy-discussion
mailing list