Python:单独取矩阵每一行的外积,取和然后返回一个和向量

标签 python numpy vectorization product outer-join

假设我有一个 N 乘 M 的矩阵 A。

我希望返回一个 N 维向量 V,其中第 n 个元素是 A 的第 n 行中条目的所有成对乘积的双和。

Formula

在循环中,我想我可以这样做:

V = np.zeros(A.shape[0])
for n in range(A.shape[0]):
    for i in range(A.shape[1]):
        for j in range(A.shape[1]):
            V[n] += A[n,i] * A[n,j]

我想对此进行矢量化,我想我可以做到:

V_temp = np.einsum('ij,ik->ijk', A, A)
V = np.einsum('ijk->i', A)

但我认为这不是非常有效的内存方式,因为当我只需要求和时,中间步骤 V_temp 不必要地存储整个外部产品。有更好的方法吗?

谢谢

最佳答案

你可以使用

V=np.einsum("ni,nj->n",A,A)

关于Python:单独取矩阵每一行的外积,取和然后返回一个和向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47764230/

相关文章:

python - 有什么方法可以解决python中的耦合微分方程系统?

python - 为什么 numpy.angle() 不是 ufunc?

matlab - 需要仅使用一个命令创建具有特定元素的矩阵

javascript - "GET"获取脚本文本, "POST"结果为 "405 method not allowed",我 _did_methods=[ 'GET' , 'POST' ] (从 JavaScript 通过 Flask 到 Python)

python - 如何在PyQt中制作双箭头按钮

python - ValueError : Cannot feed value of shape (2, ) 对于张量 'Placeholder:0' ,其形状为 '(1, 2)'

python - 累积相对于原点的滑动窗口

python - 这种修复插值可以在 Python 中变得更快吗?

python - 使用 Tweepy 返回并保存 800 条 friend 的推文

python - 如何使用 make_transient() 复制 SQLAlchemy 映射对象?