[Numpy-discussion] Release of NumPy

Anne Archibald peridot.faceted@gmail....
Wed Apr 16 04:14:42 CDT 2008


On 16/04/2008, Stéfan van der Walt <stefan@sun.ac.za> wrote:
> On 16/04/2008, Alan G Isaac <aisaac@american.edu> wrote:
>  >  > The whole issue occurs because a Matrix is not a proper
>  >  > container.
>  >
>  >
>  > Right.  And *that* is the case because of the attempt to
>  >  treat matrices as containers of matrices instead of as
>  >  containers of 1d arrays.
>  >
>  >  I can see no real advantage to having matrices be containers
>  >  of row vectors instead.  A row vector would just be a matrix
>  >  (i.e., essentially 2d) that allowed 1d style indexing.
>  >  Again I ask, have you ever needed such a thing?
>
>
> In the Matrix world, there is no such thing as an (N,) array -- which
>  is why the current Matrix object behaves so strangely, and always
>  returns a result with ndim > 1.
>
>  Your proposal suggests that a Matrix be a container of arrays, but it
>  does not address the slicing of column vectors, i.e.
>
>  x[0]
>  x[0,:]
>  x[:,0]
>
>  would then behave in completely different ways, whereas with ndarrays
>  they don't.
>
>  If you modified the proposal to say "any slicing operation that
>  returns a (1,N) or (N,1) matrix should now return an (N,) ndarray", it
>  would be more consistent, but then, wouldn't that break some other
>  expected behaviour?  I thought one of the powerful features of a
>  matrix is that it preserves the orientation of a vector slice?
>
>  The only way I've seen so far to have consistent slicing, is to have
>  an N-dim Matrix object be a container of N-1 dim Matrices, up to the
>  2-D case, in which it becomes a container of Vectors which, in turn,
>  contain scalars.

I don't think of arrays as containers of anything but scalars, so I
find this whole argument from intuition extremely strange.

My (draconian) suggestion would be to simply raise an exception when a
matrix is indexed with a scalar. They're inherently two-dimensional;
if you want a submatrix you should provide both indices (possibly
including a ":"). If you actually want a subarray, as with an array,
use ".A".

That said, I don't actually use matrices, so I don't get a vote.

Anne


More information about the Numpy-discussion mailing list