Numpy高效矩阵自乘(克矩阵)

Dan*_*Dan 4 python numpy matrix-multiplication

我想B = A @ A.T在numpy中成倍增加.显然,答案是对称矩阵(即B[i, j] == B[j, i]).

但是,我不清楚如何轻松地利用这一点将计算时间缩短一半(仅计算下三角形,B然后使用它来免费获得上三角形).

有没有办法以最佳方式执行此操作?

hpa*_*ulj 7

如@PaperPanzer的链接中所述,dot可以检测到这种情况.这是时间证明:

In [355]: A = np.random.rand(1000,1000)
In [356]: timeit A.dot(A.T)
57.4 ms ± 960 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
In [357]: B = A.T.copy()
In [358]: timeit A.dot(B)
98.6 ms ± 805 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
Run Code Online (Sandbox Code Playgroud)

Numpy dot对于对称乘法太聪明了