[Numpy-discussion] untenable matrix behavior in SVN
Anne Archibald
peridot.faceted@gmail....
Tue Apr 29 17:52:27 CDT 2008
On 30/04/2008, Keith Goodman <kwgoodman@gmail.com> wrote:
> On Tue, Apr 29, 2008 at 2:18 PM, Anne Archibald
> <peridot.faceted@gmail.com> wrote:
> > It is actually pretty unreasonable to hope that
> >
> > A[0]
> >
> > and
> >
> > A[[1,2,3]]
> > or
> > A[[True,False,True]]
> >
> > should return objects of the same rank.
>
> Why it unreasonable to hope that
>
> x[0,:]
>
> and
>
> x[0, [1,2,3]]
>
> or
>
> x[0, [True,False,True]]
>
> where x is a matrix, continue to return matrices?
Well, I will point out that your example is somewhat different from
mine; nobody is arguing that your three examples should return objects
of different ranks. There is some disagreement over whether
x[0,:]
should be a rank-1 or a rank-2 object, but x[0,[1,2,3]] and x[0,
[True, False, True]] should all have the same rank as x[0,:]. Nobody's
questioning that.
What I was pointing out is that x[0,0] should not have the same rank
as x[0,:] or x[0,[0]]. In this case it's obvious; x[0,0] should be a
scalar. But the same logic applies to
x[0,:]
versus
x[[0,1],:]
or even
x[[0],:].
For arrays, if x has rank 2, x[0,:] has rank 1. if L is a list of
indices, x[L,:] always has rank 2, no matter what is actually in L
(even if it's one element). It is perfectly reasonable that they
should yield objects of different ranks.
With matrices, we have the surprising result that x[0,:] is still a
two-dimensional object; to get at its third element I have to specify
x[0,:][0,2]. It seems to me that this is a peculiar hack designed to
ensure that the result still has "*" defined in a matrix way.
Anne
More information about the Numpy-discussion
mailing list