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