On Sat, Mar 15, 2014 at 2:12 PM, Alexander Belopolsky <ndarray@mac.com>wrote:

On Sat, Mar 15, 2014 at 4:00 PM, Charles R Harris < charlesr.harris@gmail.com> wrote:

These days they are usually written as v*w.T, i.e., the outer product of two vectors and are a fairly common occurrence in matrix expressions. For instance, covariance matrices are defined as E(v * v.T)

With the current numpy, we can do

x = arange(1, 5) x[:,None].dot(x[None,:]) array([[ 1, 2, 3, 4], [ 2, 4, 6, 8], [ 3, 6, 9, 12], [ 4, 8, 12, 16]])

I assume once @ becomes available, we will have

x[:,None] @ x[None,:] array([[ 1, 2, 3, 4], [ 2, 4, 6, 8], [ 3, 6, 9, 12], [ 4, 8, 12, 16]])

Yes, that works. I was thinking more of easy translation of the forms found in textbooks. Householder reflection, for instance, is usually written as I - 2 * v * v.T Where the `v` are unit vectors. Chuck