【发布时间】:2013-09-22 03:52:55
【问题描述】:
如果我有 numpy 数组 A 和 B,那么我可以计算它们的矩阵乘积的迹:
tr = numpy.linalg.trace(A.dot(B))
但是,当在迹线中仅使用对角线元素时,矩阵乘法 A.dot(B) 不必要地计算矩阵乘积中的所有非对角线元素。相反,我可以这样做:
tr = 0.0
for i in range(n):
tr += A[i, :].dot(B[:, i])
但这会在 Python 代码中执行循环,并且不像 numpy.linalg.trace 那样明显。
有没有更好的方法来计算 numpy 数组的矩阵乘积的轨迹?最快或最惯用的方法是什么?
【问题讨论】: