Python - Matrix äußeres Produkt

8

Gegeben zwei Matrizen

%Vor%

Ich möchte eine weitere Matrix C: m * n erzeugen, wobei jeder Eintrag C_ij eine Matrix ist, die durch das äußere Produkt von A_i und B_j berechnet wird.

Zum Beispiel

%Vor%

gibt

%Vor%

Ich kann es mit for-Schleifen machen, wie

%Vor%

Ich frage mich, ob es eine vektorisierte Methode gibt, um diese Berechnung zu beschleunigen,

    
Lei Yu 19.07.2014, 10:43
quelle

3 Antworten

6
%Vor%

NumPiefunktionen wie multiply haben eine outer Methode, die fast das tut, was Sie wollen. Folgendes:

%Vor%

erzeugt ein Ergebnis wie temp[a, b, c, d] == A[a, b] * B[c, d] . Du willst C[a, b, c, d] == A[a, c] * B[b, d] . Der Aufruf swapaxes ordnet temp neu an in der Reihenfolge, die Sie wollen.

    
user2357112 19.07.2014, 12:34
quelle
13

Die Einstein-Notation drückt dieses Problem gut aus

%Vor%     
hpaulj 19.07.2014 15:45
quelle
0

Verwenden Sie numpy ;

%Vor%

Sobald Sie das gewünschte Ergebnis haben, können Sie numpy.reshape() verwenden, um es in fast jeder gewünschten Form zu formen;

%Vor%     
Roland Smith 19.07.2014 11:39
quelle

Tags und Links