[Numpy-discussion] numpy.complex
OC
oc-spam66 at laposte.net
Sat Jul 21 11:44:43 EDT 2012
Thank you for your answers.
Chris Barker wrote:
> for consistency with the rest of the numpy types
Then, why do "numpy.complex64(A)", "numpy.complex128(A)",
"numpy.uint8(A)",... all work with arrays? It's very convenient that it
works like this! It's awkward that "numpy.complex(A)" is the only one
that does not.
Is there a problem to extend "numpy.complex" so that it acts the same as
"numpy.complex64"?
Pauli Virtanen wrote:
> Remember that "numpy.complex", "numpy.complex64" (...) are types that
> represent scalar numbers, not arrays. (...) That you get an array
> out from "numpy.complex64(A)" rather than a "ValueError" is
> un-Pythonic.
Thanks for pointing this out. I don't see why it would be un-pythonic,
and on the contrary this behavior is useful. Why shouldn't a "type"
object offer such useful method/constructor? Is there a design mistake
here? (from the Python point of view, not from the C++ point of view).
All the types you mention inherit from "numpy.generic", except
"numpy.complex". Is there a reason for this? I find it awkward and
misleading.
I understand that "numpy.real" and "numpy.complex" are different things
from a programmer's point of view, the first being a "function" and the
latter being a "type". However, from the syntax point of view, I think
that an average user is founded to believe that they behave similarly
with arrays.
And such an improvement seems to be easy. For example, why isn't
"numpy.complex" simply equal to "numpy.complex_" instead of
"__builtin__.complex"?
Note: same remark for "numpy.bool" and "numpy.bool_"
More information about the NumPy-Discussion
mailing list