[Numpy-discussion] Thoughts about zero dimensional arrays vs Python scalars

Ralf Juengling juenglin at cs.pdx.edu
Sat Mar 19 21:49:05 EST 2005

I just read the section about "Array Scalars" again and
am not sure anymore that I understood the whole idea. When
you say "Array Scalar", do you mean a zero dimensional 
array or is an "Array Scalar" yet another animal?


On Sat, 2005-03-19 at 21:06, Ralf Juengling wrote:
> Travis,
> Discussing zero dimensional arrays, the PEP says at one point:
>    ... When ndarray is imported, it will alter the numeric table
>    for python int, float, and complex to behave the same as 
>    array objects. 
>    Thus, in the proposed solution, 0-dim arrays would never be
>    returned from calculation, but instead, the equivalent Python
>    Array Scalar Type.  Internally, these ArrayScalars can
>    be quickly converted to 0-dim arrays when needed.  Each scalar
>    would also have a method to convert to a "standard" Python Type
>    upon request (though this shouldn't be needed often).
> I'm not sure I understand this. Does it mean that, after having
> imported ndarray, "type(1)" to "ndarray.IntArrType" rather than 
> "int"?
> If so, I think this is a dangerous idea. There is one important
> difference between zero dimensional arrays and Python scalar 
> types, which is not discussed in the PEP: arrays are mutable, 
> Python scalars are immutable.
> When Guido introduced in-place operators in Python, (+=, *=, 
> etc.) he decided that "i += 1" should be allowed for Python
> scalars and should mean "i = i + 1". Here you have it, it 
> means something different when i is a mutable zero dimensional
> array. So, I suspect a tacit re-definition of Python scalars
> on ndarray import will break some code out there (code, that
> does not deal with arrays at all). 
> Facing this important difference between arrays and Python
> scalars, I'm also not sure anymore that advertising zero
> dimensional arrays as essentially the same as Python scalars
> is such a good idea. Perhaps it would be better not to try to
> inherit from Python's number types and all that. Perhaps it
> would be easier to just say that indexing an array always 
> results in an array and that zero dimensional arrays can be 
> converted into Python scalars. Period.
> Ralf
> PS: You wrote two questions about zero dimensional arrays 
> vs Python scalars into the PEP. What are your plans for 
> deciding these?
> -------------------------------------------------------
> SF email is sponsored by - The IT Product Guide
> Read honest & candid reviews on hundreds of IT Products from real users.
> Discover which products truly live up to the hype. Start reading now.
> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/numpy-discussion

More information about the NumPy-Discussion mailing list