[Numpy-discussion] rank-0 arrays

Travis Oliphant oliphant at ee.byu.edu
Mon Sep 16 15:51:04 CDT 2002


>
> Travis Oliphant wrote:
>
> > This is the gist of it.  Basically you extend the Python scalars to
> > include the single precision types (all the types Numeric supports).
>
> Would they be recognised as scalars by Python? In particular, could you
> use one as an index? Personally, this is what has bit me in the past: I
> could use A[3,2] as an index if A was type "Int" but not if it was
> "Int16" for example.
>
> In any case, the type of A[3,2] should NOT depend on the precision of
> the numbers stored in A.
>
> Frankly, I have no idea what the implimentation details would be, but
> could we get rid of rank-0 arrays altogether? I have always simply found
> them strange and confusing... What are they really neccesary for
> (besides holding scalar values of different precision that standard
> Pyton scalars)?

With new coercion rules this becomes a possibility.  Arguments against it
are that special rank-0 arrays behave as more consistent numbers with the
rest of Numeric than Python scalars.  In other words they have a length
and a shape and one can right N-dimensional code that works the same even
when the result is a scalar.

Another advantage of having a Numeric scalar is that we can control the
behavior of floating point operations better.

e.g.

if only Python scalars were available and sum(a) returned 0, then

 1 / sum(a)  would behave as Python behaves (always raises error).

while with our own scalars

1 / sum(a)   could potentially behave however the user wanted.


-Travis








More information about the Numpy-discussion mailing list