[Numpy-discussion] arrays of matrices
Thu Feb 28 18:55:11 CST 2008
On Thu, Feb 28, 2008 at 6:43 PM, Geoffrey Irving <email@example.com> wrote:
> > The magic is in In. We reshape the array of vectors to be
> > compatible with the shape of the array of matrices. When we multiply
> > the two together, it is as if we multiplied two (n,3,3) matrices, the
> > latter being the vectors repeated 3 times. Then we sum along the rows
> > of each of the product matrices to get the desired dot product.
> Thanks! That'll do nicely.
> For large matrices, that could be problematic due to the blowup in
> intermediate memory, but on the other hand for large matrices a loop
> through the toplevel index wouldn't add much cost.
If you really want to save memory and you can destroy A, then you
could do the multiplication in-place. If you really want to get fancy
and can destroy b, you can use it as storage for the summation output,
In : A *= b.reshape([n,1,3])
In : c = A.sum(axis=-1, out=b)
In : b
array([[ 50, 140, 230],
[ 1220, 1580, 1940],
[ 4010, 4640, 5270],
[ 8420, 9320, 10220],
[14450, 15620, 16790]])
In : c is b
> > PS: Are you perchance the Geoffrey Irving I knew at CalTech, class of '03?
> Yep. That would answer the question I had when I started reading this email.
> However, it's spelled Caltech, not CalTech!
Yeah, yeah, yeah. The Wikis, they have taken over my finger ReFlexes.
NumPy Rudds += 1. Take that, Tim Hochberg! :-)
"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
-- Umberto Eco
More information about the Numpy-discussion