[Numpy-discussion] adding a .M attribute to the array.

Travis Oliphant oliphant.travis at ieee.org
Tue Mar 5 20:36:02 CST 2002

Recently there has been discussion on the list about the awkwardness of 
matrix syntax when using Numeric Python.

Matrix expressions can be awkard to express in Numeric which is a negative 
mark on an otherwise excellent computing environment.

Currently part of the problem can be solved by working with Matrix objects 

a = Matrix.Matrix("[1 2 3; 4 5 6]")     # Notice the strings.

However, most operations return arrays which have to be recast to matrices 
using at best a character with parenthesis:

M = Matrix.Matrix

M(sin(a)) * M(cos(a)).T

The suggestion was made to add ".M" as an attribute of arrays which returns a 
matrix.  Thus, the code above can be written:

sin(a).M * cos(a).M.T

While some aesthestic simplicity is obtained, the big advantage is in 
consistency.  Somebody else may decide that 

P = Matrix.Matrix  is a better choice.  But, if we establish that 

.M  always returns a matrix for arrays < 2d, then we gain consistency.

I've made this change and am ready to commit the change to the Numeric tree, 
unless there are strong objections.   I know some people do not like the 
proliferation of attributes, but in this case the notational convenience it 
affords to otherwise overly burdened syntax and the consistency it allows 
Numeric to deal with Matrix equations may be worth it.

What do you think?

-Travis Oliphant

More information about the Numpy-discussion mailing list