immaginare di avere matrici 2 NumPy:C'è un prodotto numpy/scipy dot, che calcola solo le voci diagonali del risultato?
> A, A.shape = (n,p)
> B, B.shape = (p,p)
Tipicamente p è un numero inferiore (p < = 200), mentre n può essere arbitrariamente grande.
sto facendo quanto segue:
result = np.diag(A.dot(B).dot(A.T))
Come potete vedere, sto mantenendo solo i n elementi diagonali, tuttavia v'è una (n x n) gamma intermedia calcolata da cui sono conservati solo gli elementi diagonali.
Desidero una funzione come diag_dot(), che calcola solo le voci diagonali del risultato e non alloca la memoria completa.
Un risultato sarebbe:
> result = diag_dot(A.dot(B), A.T)
C'è una funzionalità premade come questo e questo può essere fatto in modo efficiente, senza la necessità per l'assegnazione del (n x n) matrice intermedia?
+1 intelligente algebra è sempre meglio di algoritmi sofisticati. – Jaime