Colin J. Williams wrote: > Alan G Isaac wrote: >> On Sat, 24 Mar 2007, Charles R Harris apparently wrote: >>> Yes, that is what I am thinking. Given that there are only the two >>> possibilities, row or column, choose the only one that is compatible with >>> the multiplying matrix. The result will not always be a column vector, for >>> instance, mat([[1]])*ones(3) will be a 1x3 row vector. >> >> >> Ack! The simple rule `post multiply means its a column vector` >> would be horrible enough: A*ones(n)*B becomes utterly obscure. >> Now even that simple rule is to be violated?? > > It depends whether ones delivers an instance of the Matrix/vector class > or a simple array. > > I assume that, in the above A and B represent matrices. > > Colin W.
Postscript: I hadn't read the later postings when I posted the above. PyMatrix used the convention mentioned in an earlier posting. Simply a vector is considered as a single row matrix or a single column matrix. This same approach can largely be used with numpy's mat: *** Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win32. *** >>> import numpy as _n >>> _n.ones(3) array([ 1., 1., 1.]) >>> a= _n.ones(3) >>> a.T array([ 1., 1., 1.]) >>> _n.mat(a) matrix([[ 1., 1., 1.]]) >>> _n.mat(a).T matrix([[ 1.], [ 1.], [ 1.]]) >>> b= _n.mat(a).T >>> a * b matrix([[ 3.]]) # Something has gone wrong here - it looks as though there is normalization under the counter. >>> In any event, the problem posed by Alan Isaac can be handled with this approach: A * mat(ones(3)).t * B can produce the desired result. I haven't tested it. Colin W. >> Down this path lies madness. >> Please, just raise an exception. >> >> Cheers, >> Alan Isaac _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion