numpy数组中的逐列点积

时间:2018-07-16 16:51:29

标签: python numpy

我有两个相等大小的numpy数组(A,B),每个说3 * 3。我想要一个大小为(3,)的输出向量,该向量具有A的第一行和B的第一列,A的第二行和B的第二列的点积,依此类推。

    A = np.array([[ 5, 1 ,3], [ 1, 1 ,1], [ 1, 2 ,1]])
    B = np.array([[1, 2, 3], [1, 2, 3], [1, 2, 3]])

我想要得到的结果是 [16,6,8] 这对

    np.diagonal(A.dot(B.T))

但是我当然不想要这种解决方案,因为矩阵非常大。

1 个答案:

答案 0 :(得分:2)

只需执行元素明智的乘法,然后sum行:

(A * B).sum(axis=1)
# array([16,  6,  8])

或使用np.einsum

np.einsum('ij,ij->i', A, B)
# array([16,  6,  8])