17

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

4

3 に答える 3