Stellen 2 numpy Arrays mit:Gibt es ein numpiges/scipy-Punktprodukt, das nur die diagonalen Einträge des Ergebnisses berechnet?
> A, A.shape = (n,p)
> B, B.shape = (p,p)
Typischerweise p ist eine kleinere Anzahl (p < = 200), während n beliebig groß sein kann.
Ich tue folgendes:
result = np.diag(A.dot(B).dot(A.T))
Wie Sie sehen können, bin ich nur die n Diagonaleinträge zu halten, aber es ist ein Zwischenprodukt (n x n) Array berechnet, aus dem nur die diagonalen Einträge gehalten werden.
Ich wünsche für eine Funktion wie diag_dot(), die nur die diagonalen Einträge des Ergebnisses berechnet und nicht den gesamten Speicher zuweist.
würde ein Ergebnis sein:
> result = diag_dot(A.dot(B), A.T)
Gibt es eine vorgefertigte Funktionalität wie diese und diese effizient für die Zuteilung des Zwischen (n x n) Array, ohne die Notwendigkeit zu tun?
+1 Smart-Algebra ist immer besser als hoch entwickelte Algorithmen. – Jaime