[Numpy-discussion] What's wrong with matrices?

Keith Goodman kwgoodman at gmail.com
Fri Jul 7 10:45:17 CDT 2006

On 7/7/06, Ed Schofield <schofield at ftw.at> wrote:

> I'd like to help to make matrices more usable.  Tell me what you want,
> and I'll work on some patches.

I can't pass up an offer like that.


diag(M) returns an array. It would be nice if diag(M) returned
asmatrix(diag(M)).T. It would also be nice if you can construct a
diagonal matrix directly from what is returned from diag(M). But right
now you can't:

>> x

matrix([[0, 1, 2],
        [3, 4, 5],
        [6, 7, 8]])

>> diag(x)
array([0, 4, 8])

>> d = asmatrix(diag(x)).T

>> d


>> diag(d)
array([0])  <-- this should be a 3x3 matrix


Making it easier to construct matrices would be a big help. Could the
following function be made to return matrices?

ones, zeros, rand, randn, eye, linspace, empty

I guess the big decision is how to tell numpy to use matrices. How about

from numpy.matrix import ones, zeros ?

I would prefer something even more global. Something that acts like
the global variable 'usematrix = True'. Once that is declared, the
default changes from array to matrix.


>> x

matrix([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

>> y


>> x[y>1,:]

This is a big one for me. If x[y>1,:] returned

>> x[2,:]
matrix([[6, 7, 8]])

then there would no longer be a need for array :)

More information about the Numpy-discussion mailing list