我正在寻找一种快速计算n种外部产品总和的方法.
本质上,我从正态分布生成的两个矩阵开始 - 有n个向量与v元素:
A = np.random.normal(size = (n, v))
B = np.random.normal(size = (n, v))
Run Code Online (Sandbox Code Playgroud)
我想要的是计算A和B中每个大小为v的向量的外积并将它们加在一起.
注意A * B.T不起作用 - A的大小为nxv,而B的大小为vx n.
我能做的最好的事情是创建一个外部产品构造的循环,然后再加总.我喜欢它:
outers = np.array([A[i] * B[i].T])
Run Code Online (Sandbox Code Playgroud)
这会创建一个nxvxv数组(循环在列表解析中,随后转换为数组),然后我可以使用它来加总np.sum(outers, axis = 0).然而,这是非常缓慢的,我想知道是否有一个矢量化函数,我可以使用它来加快速度.
如果有人有任何建议,我将非常感激!