Einsum
import numpy as np
a = np.array([1, 2])
b = np.array([
[1, 2, 3],
[4, 5, 6]
])
a
array([1, 2])
b
array([[1, 2, 3],
[4, 5, 6]])
(a[:, np.newaxis] * b)
array([[ 1, 2, 3],
[ 8, 10, 12]])
c = (a[:, np.newaxis] * b).sum(axis=1)
c
array([ 6, 30])
c_einsum = np.einsum('i, ij->i', a, b)
c_einsum
array([ 6, 30])
More:
https://stackoverflow.com/questions/26089893/understanding-numpys-einsum
http://ajcr.net/Basic-guide-to-einsum/