广播矩阵 - 矢量点积

时间:2014-06-11 23:08:22

标签: python numpy matrix broadcast

我有一组采用形状为(1222, 47, 47)的三维数组收集的矩阵,以及一个形状为(1222, 47)的二维数组中的一组向量。

是否存在将每个[47x47]矩阵与其对应的[47]向量相乘的广播方式?使用完整循环,这将是

numpy.vstack([A[n, :, :].dot(xb[n, :]) for n in range(A.shape[0])])

这对于1222个元素是可以的,但我可能会在以后有更多。我尝试dotmatrix_multiplyinnerinner1d符合条件,与transpose结合使用,但我没有完全理解。可以这样做吗?

1 个答案:

答案 0 :(得分:3)

任何这些都应该这样做:

matrix_multiply(matrices, vectors[..., None])
np.einsum('ijk,ik->ij', matrices, vectors)

没有人会利用高度优化的图书馆。

将来的某个时候,当PEP 465已经实施时,使用Python> = 3.5,您应该能够做到:

matrices @ vectors[..., None]