# [Numpy-discussion] untenable matrix behavior in SVN

Keith Goodman kwgoodman@gmail....
Tue Apr 29 15:15:21 CDT 2008

```On Tue, Apr 29, 2008 at 12:50 PM, Keith Goodman <kwgoodman@gmail.com> wrote:
> On Tue, Apr 29, 2008 at 11:46 AM, Keith Goodman <kwgoodman@gmail.com> wrote:
>  > On Tue, Apr 29, 2008 at 11:21 AM, Alan G Isaac <aisaac@american.edu> wrote:
>  >  > On Tue, 29 Apr 2008, Keith Goodman apparently wrote:
>  >  >  > I often use x[i,:] and x[:,i] where x is a matrix and i is
>  >  >  > a scalar. I hope this continues to return a matrix.
>  >  >
>  >  >  1. Could you give an example of the circumstances of this
>  >  >  use?
>  >
>  >  In my use i is most commonly an array (i = M.where(y.A)[0] where y is
>  >  a nx1 matrix), sometimes a list, and in ipython when debugging or
>  >  first writing the code, a scalar. It would seem odd to me if x[i,:]
>  >  returned different types of objects based on the type of i:
>  >
>  >  array index
>  >  idx = M.where(y.A)[0] where y is a nx1 matrix
>  >  x[dx,:] -->  matrix
>  >
>  >  list index
>  >  idx = [0]
>  >  x[idx,:] --> matrix?
>  >
>  >  scalar index
>  >  idx = 0
>  >  x[idx,:] --> not matrix
>
>  Here's another use case:
>
>     for i in xrange(x.shape[1]):
>         xi = x[:,i]
>         idx = M.where(M.isfinite(xi).A)[0]
>         xi = xi[idx,:]
>         # more code
>
>  Also the functions I have written work on matrices. If x[i,:] did not
>  return a matrix, let's say it returned some other vector type object
>  that you index with a scalar, then my functions will have to test
>  whether the input is a full matrix or a vector since the indexing is
>  different.

And here's a use case that currently doesn't work but would be nice
(for me) if it did:

x[idx,i] = M.rand(2,1)

where x is a matrix, say 4x3, idx is an array with 2 elements, and i is a scalar
```