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 配列の行列積のトレースを計算するより良い方法はありますか? これを行うための最速または最も慣用的な方法は何ですか?