[Numpy-discussion] rank-0 arrays
Travis Oliphant
oliphant at ee.byu.edu
Mon Sep 16 15:51:04 EDT 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