【发布时间】:2021-10-15 17:34:08
【问题描述】:
我在 python 中有一个大型 2D NumPy 数组 M,我想计算 numpy.matmul(M, M.T),或等效的 numpy.dot(M, M.T)。
但是,numpy.matmul 和 numpy.dot 不会利用与转置相乘所涉及的对称性,所以我相信我正在做我真正需要做的工作的两倍。
有没有一种简单的方法可以通过利用对称性并只做一半的工作来加快速度?也许有一个 NumPy/SciPy 函数或其他我不知道的 python 库可以完成这个?
【问题讨论】:
-
this 会回答您的问题吗?还是this paper?
-
@Ivan 谢谢,但我应该澄清一下,我想知道是否有一些 numpy 库或其他 python 库,我不知道这样做,并利用这样一个事实,如果A 是结果积,则 A[i][j] = A[j][i]
-
你怎么知道
matmul没有利用对称性?只是缺少明确的控制参数?你做过时间测试吗? -
@hpaulj 啊我相信你是对的,请看下面我的回答
标签: numpy matrix transpose matrix-multiplication dot-product