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