# [Numpy-discussion] Release of NumPy

Bill Spotz wfspotz@sandia....
Thu Apr 17 10:45:06 CDT 2008

```Since I am the one who initially proposed the RowVector/ColumnVector
idea, I have followed the discussion here with interest.  However,
since I typically deal with sparse matrices, I didn't feel like I had
much to contribute to the indexing issues.  But now that we are
getting into sparse matrices, that has changed a little....

On Apr 17, 2008, at 9:11 AM, Travis E. Oliphant wrote:
> Alan G Isaac wrote:
>>
>> What is more, Travis's question seems
>> to kill my proposal, since it seems to
>> imply that
>>
> I didn't intentionally mean to do that.
>
>>        - the behavior of matrices and sparse matrices
>>          should match
>>
> This is what I would like.
>>        - that x[0] should yield a sparse matrix if x is
>>          a sparse matrix
>>
> This is what is debatable.

So, I would expect to be able to access S[i,j], where S is a sparse
matrix, and get 0 if (i,j) is not stored, and the correct value if
(i,j) is stored.  This would be consistent behavior with dense
matrices.  But what should S[i] return, (or S[:,j])?

Along the lines of RowVector/ColumnVector, we could define
SparseRowVector/SparseColumnVector classes, which would provide the
expected behavior.  Internally, they would store non-zero elements,
and their corresponding indexes.  Externally, v[i] (where v is one of
the SparseVector classes) would just return the appropriate (zero or
non-zero) value.  Then

S[i]   -> SparseRowVector
S[:,j] -> SparseColumnVector

This would be consistent behavior between dense and sparse matrices
and support proper M[i][j] access.  I don't know what iterating over a
SparseVector would mean/imply.

And it provides an example of the additional capabilities Alan has

(I am assuming here a compressed-row or compressed-column storage
format, but I think it could apply to other sparse matrix formats as
well.)

** Bill Spotz                                              **
** Sandia National Laboratories  Voice: (505)845-0170      **
** P.O. Box 5800                 Fax:   (505)284-0154      **
** Albuquerque, NM 87185-0370    Email: wfspotz@sandia.gov **

```