python - Numpy 整个矩阵与单行相乘

标签 python numpy

我有两个 numpy 矩阵,A 和 B:

A = [[0,-1],
     [-2,5],
     [2,6]]
B = [[5,3],
     [2,4]]
Dimension of A: N * K
Dimension of B: K * K

我想做的是与A的每一行整个B进行矩阵乘法,然后与A的每一行相乘 再次。然后总结一下。

这是:

N = A.shape[0]
sum = 0
for i in range(N):
    s = A[i] @ B @ A[i]
    print(s)
    sum += s
return sum

此打印

4
70
224

4 + 70 + 224 = 298 就是我想要的。 有没有任何优雅或Python式的方法可以在没有for循环的情况下实现这一点? 谢谢

最佳答案

我们可以使用np.einsum -

np.einsum('ij,jk,ik->',A,B,A)

并使用optimize标志进一步优化它 -

np.einsum('ij,jk,ik->',A,B,A,optimize=True)

关于python - Numpy 整个矩阵与单行相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53113941/

相关文章:

python - 安装 screenkey 时出错?

python - SQLAlchemy union_all 和 all() 返回错误数量的项目

python - NumPy / python : Array iteration without for-loop

python-3.x - 将字段插入结构化数组的特定列索引处

python - Matlab 和 Python 读取二进制文件的不同方式

python - pandas,将 DataFrame 转换为 MultiIndex'ed DataFrame

Python:处理大量数据。 Scipy 还是 Rpy?如何?

python - 防止 Django 模型中的 DateRangeField 重叠?

python - 在python中插入数据库

Python:使用异常进行迭代(初学者)