python - Numpy高效矩阵自乘(gram矩阵)

标签 python numpy matrix-multiplication

我想在 numpy 中乘以 B = A @ A.T。显然,答案将是一个对称矩阵(即 B[i, j] == B[j, i])。

但是,我不清楚如何轻松利用它来将计算时间缩短一半(通过只计算 B 的下三角,然后使用它来获得上三角自由)。

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

最佳答案

如@PaulPanzer 的链接所述,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)

Numpy dot too clever about symmetric multiplications

关于python - Numpy高效矩阵自乘(gram矩阵),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50733148/

相关文章:

python - 在字典/ HashMap 中(在Python中)使用对象作为自己的键是否正常?

python - 如何计算一个序列在 python 中的给定字符串中出现了多少次?

python - 如何使用 python 生成二维码并在扫描时使其打开定义的 url?

python - 将两个数组合并为数组列表

python - 使用Python 3.7.3,从给定目录中的文件加权列表中随机选择/选择

c - 高效的 4x4 矩阵乘法(C 语言与汇编语言)

python - numpy.random.normal() 函数的最大和最小间隔是多少?

algorithm - 矩阵链乘法可以有多个答案吗?

python - 来自因子载荷和因子协方差的协方差矩阵?