# [Numpy-discussion] Release of NumPy

Stéfan van der Walt stefan@sun.ac...
Tue Apr 15 11:12:14 CDT 2008

```On 15/04/2008, Alan G Isaac <aisaac@american.edu> wrote:
> I thought the context of the discussion had become something
>  like this: there is no reason for the matrix interface to
>  deviate from the array interface except as needed to provide
>  specific desired functionality.  Essentially,
>
>         - matrix multiplication
>         - powers of square matrices
>         - submatrix creation
>
>  The proposal on the table is to remove an unneeded (and
>  unwanted) deviation of the matrix API from the ndarray API.
>  That is all.

Unless my memory fails me (again), this would result in another
deviation from numpy: that x[0] no longer returns the first row of any
2D array (matrix), especially when dealing with matrices of shape of
(1,N).

The whole issue occurs because a Matrix is not a proper container.  An
N-d array is a container of N-1-d arrays.  This does not currently
hold for matrices, but it *could* hold for matrices if we introduced
RowVector and ColumnVector.  Then we'd have, for arrays

x is a (3,3) array -> x[0] is a (3,) array -> x[0][0] is a scalar

and for matrices

x is a (3,3) matrix -> x[0] is a (3,) ColumnVector or RowVector ->
x[0][0] is a scalar

>  Adding row and column vectors is really orthogonal to the
>  change under discussion.  (And let me add, as a user of
>  matrices, I am never feeling the need for these. Are you?)

Orthogonal? -- so far, this is the only suggested solution that
behaves in an entirely consistent way.  That said, any solution is
better than nothing; the current behaviour is confusing.

My favorite quote in these threads so far has to be by Charles Harris:

"All this for want of an operator ;)"

Regards
Stéfan
```