[Numpy-discussion] Howto vectorise a dot product ?
tpk at kraussfamily.org
Wed Jun 10 23:58:09 EDT 2009
bruno Piguet wrote:
> Can someone point me to a doc on dot product vectorisation ?
As I posted in the past you can try this one liner:
" numpy.array(map(numpy.dot, a, b))
that works for matrix multiply if a, b are (n, 3, 3). "
This would also work if a is (n, 3, 3) and b is (n, 3, 1)
Maybe write a loop of length 3?
For example, taking a linear combination of columns,
out = np.zeros(a.shape[:-1], a.dtype)
for i in range(a.shape[-1]):
out += a[..., i]*b[..., i, :]
Now we can vectorize that loop - here's one with no loop that expands the
right array to a larger intermediate array via broadcasting, does
elementwise multiplication, and then sums along the appropriate dimension:
(a[..., np.newaxis]*b[..., np.newaxis, :, :]).sum(len(a.shape)-1)
I think I would still prefer a C implementation ... this isn't terribly
readable or optimal (maybe the numeric police can help me out here....!
View this message in context: http://www.nabble.com/Howto-vectorise-a-dot-product---tp23949253p23974947.html
Sent from the Numpy-discussion mailing list archive at Nabble.com.
More information about the NumPy-Discussion