numpy. Умножить это можно. Он имеет семантику умножения матриц, поэтому вам нужно транспонировать матрицу. Находится ниже того, что вы искали?
In [19]: >>> x1 = np.arange(9.0).reshape((3, 3))
In [20]: >>> x2 = np.arange(3.0)
In [21]: np.multiply(x1.T, x2.T).T
Out[21]:
array([[ 0., 0., 0.],
[ 3., 4., 5.],
[12., 14., 16.]])