Вы также можете использовать пресловутый einsum :
np.einsum('ij,kj->ik', a,b)
Тест:
a, b = np.arange(12).reshape(3,4), np.arange(16).reshape(4,4)
np.einsum('ij,kj->ik', a,b)
Вывод:
array([[ 14, 38, 62, 86],
[ 38, 126, 214, 302],
[ 62, 214, 366, 518]])
Если вы хотите 1-D массив, соедините его с .flatten()
или ravel()
:
np.einsum('ij,kj->ik', a,b).ravel()
Вывод:
array([ 14, 38, 62, 86, 38, 126, 214, 302, 62, 214, 366, 518])