[Numpy-discussion] untenable matrix behavior in SVN

Anne Archibald peridot.faceted at gmail.com
Tue Apr 29 18:52:27 EDT 2008


On 30/04/2008, Keith Goodman <kwgoodman at gmail.com> wrote:
> On Tue, Apr 29, 2008 at 2:18 PM, Anne Archibald
>  <peridot.faceted at 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