Ich habe ein Array w
(Form (3000, 100, 100)
), die ich mit einem anderen Array multiplizieren will e
(Form (5, 3000)
), so dass das Ergebnis k
hat Form (5, 5, 100, 100)
undnumpy linearer Algebra auf diagonale Arrays ohne explizite Duplizierung
k[:, :, i, j] = e @ np.diag(w[:, i, j]) @ e.T
Da w
so groß ist, ist es nicht praktisch, ein super_w
Array mit der Form (3000, 3000, 100, 100)
zu erstellen und die Hauptdiagonale explizit aufzufüllen. Es ist auch nicht sehr effizient, über i
und j
zu loopen. Gibt es eine speichereffiziente Möglichkeit, dies zu tun, außer w
in Stücke zu zerlegen?
hatte keine Ahnung, diese mit einsum möglich war! – DathosPachy