On 3/29/07, Timothy Hochberg <[EMAIL PROTECTED]> wrote:
On 3/29/07, Bill Baxter <[EMAIL PROTECTED]> wrote: > > On 3/30/07, Timothy Hochberg <[EMAIL PROTECTED]> wrote: > > Note, however that you can't (for instance) multiply column vector > with > > a row vector: > > > > >>> (c)(r) > > Traceback (most recent call last): > > ... > > TypeError: Cannot matrix multiply columns with anything > > > > That should be allowed. (N,1)*(1,M) is just an (N,M) matrix with > entries C[i,j] = A[i,0]*B[0,] I thought about that a little, and while I agree that it could be allowed, I'm not sure that it should be allowed. It's a trade off between a bit of what I would guess is little used functionality with some enhanced error checking (I would guess that usually row*column signals a mistake). However, I don't care much one way or the other; it's not hard to allow.
It's really a sort of tensor product, so use outer(.,.). In my mind, row and column vectors are *not* matrices, they only have a single dimension. On the other hand (r)(c) is really the application of the dual vector r (a functional) to the vector c, i.e., r is a map from vectors into the reals (complex). However, I think overloading the multiplication in this case is reasonable. I kind of like the idea of using call for multiply, though. If it
> doesn't turn out to have any major down sides it could be a good way > to give ndarray a concise syntax for "dot".
Hmmm, have to try it a bit to see how it looks. Overall, I like this approach. Chuck
_______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion