Czy jest jakiś sposób, aby obliczyć przekątną wartość matrycy C, która jest równa numpy.matmul (A, B) bez konieczności obliczania elementów off-przekątnej? Ponieważ pracuję z dwoma dużymi matrycami A i B i muszę tylko mieć ukośne elementy ich mnożenia w pozostałej części mojego kodu. A czas biegu jest znacznie duży, jeśli obliczę całą matrycę C. Dzięki z góry.

0
Mohammad 26 październik 2020, 11:37

1 odpowiedź

Najlepsza odpowiedź

Możesz to osiągnąć jako:

arr1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2 = np.array([[10,11,12],[13,14,15],[16,17,18]])

diag_elem = [sum(arr1[i,]*arr2[:,i]) for i in range(arr1.shape[0])]
print(diag_elem)

wyjście:

[84, 216, 366]

Które są te same elementy przekątne, które otrzymujesz za pomocą NP.MatMul

print(np.matmul(arr1,arr2))

Prowadzi do

array([[ 84,  90,  96],
   [201, 216, 231],
   [318, 342, 366]])
1
Arvind Kumar 26 październik 2020, 10:08