我有一个2d numpy数组 X = (xrows, xcols)
,我想对数组的每行组合应用点积,以获得另一个形状为 P = (xrow, xrow)
的数组。
代码如下:
P = np.zeros((xrow, xrow))
for i in range(xrow):
for j in range(xrow):
P[i, j] = numpy.dot(X[i], X[j])
如果数组X
很小,则这种方法效果很好,但对于大型的X
来说可能需要花费大量时间。有没有更快的方法或者更符合Python语言特性的方式来加速处理呢?
X.dot(X.T)
的内存消耗如何? - Abhishek Thakurnp.zeros((X.shape[0],) * 2)
并写入其中。在不产生太多内存开销的情况下,这个操作是完全可能的。我无法告诉你 numpy 是如何实现的。如果内存是您的使用案例的问题,请提供一些维度。 - eickenberg