On Monday, July 23, 2012, OC wrote:

>  > It's unPythonic just in the sense that it is unlike every other type
>  > constructor in Python. int(x) returns an int, list(x) returns a list,
>  > but np.complex64(x) sometimes returns a np.complex64, and sometimes it
>  > returns a np.ndarray, depending on what 'x' is.
>
> This "object factory" design pattern adds useful and natural functionality.
>
>  > I can see an argument for deprecating this behaviour altogether and
>  > referring people to the np.asarray(x, dtype=complex) form; that would
>  > be cleaner and reduce confusion. Don't know if it's worth it, but
>  > that's the only cleanup that I can see even being considered for these
>  > constructors.
>
>  From my experience in teaching, I can tell that even beginners have no
> problem with the fact that "complex128(1)" returns a scalar and that
> "complex128(r_[1])" returns an array. It seems to be pretty natural.
>
> Also, from the duck-typing point of view, both returned values are
> complex, i.e. provide 'real' and 'imag' attributes and 'conjugate()'
> method.
>
> On the contrary a real confusion is with "numpy.complex" acting
> differently than the other "numpy.complex*".
>
>  > People do write "from numpy import *"
>
> Yeah, that's what I do very often in interactive "ipython" sessions.
> Other than this, people are warned often enough that this shouldn't be
> used in real programs.



Don't be so sure of that.  The "pylab" mode from matplotlib has been both a
blessing and a curse.  This mode is very popular and for many, "it is all
they need/want to know".  While it has made the transition from other
languages easier for many, the polluted namespace comes at a small cost.

And it is only going to get worse when moving over to py3k where just about
everything is a generator.  __builtin__.any can handle generators, but
np.any does not.  Same goes for several other functions.

Note, I do agree with you that the discrepancy needs to be fixed, I just am
not sure which way.

Ben Root
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to