Berechne das äußere Produkt von Arrays mit beliebigen Dimensionen

8

Ich habe zwei Arrays A,B und möchte das äußere Produkt auf ihre letzte Dimension nehmen, z.B. %Code% wenn result[:,i,j]=A[:,i]*B[:,j] zweidimensional sind.

Wie kann ich das tun, wenn ich nicht weiß, ob sie zwei- oder dreidimensional sein werden?

In meinem speziellen Problem A,B sind Scheiben aus einem größeren 3-dimensionalen Array A,B , Manchmal kann dies mit ganzzahligen Indizes Z und anderen Zeiten aufgerufen werden mit Scheiben A=Z[:,1,:], B=Z[:,2,:] . Da scipy Singleton-Dimensionen "quetscht", weiß ich nicht, welche Dimensionen meine Eingaben haben wird sein.

Das array-outer-product, das ich definieren möchte, sollte

erfüllen %Vor%

für beliebige Rang-3-Arrays A=Z[:,1:3,:],B=Z[:,4:6,:] und ganze Zahlen Y,Z

Die Art von Problem, mit der ich es zu tun habe, beinhaltet ein zweidimensionales räumliches Gitter mit einer vektorwertigen Funktion an jedem Gitterpunkt. Ich möchte in der Lage sein, die Kovarianzmatrix (äußeres Produkt) dieser Vektoren über Regionen zu berechnen, die durch Schnitte in den ersten beiden Achsen definiert sind.

    
Dave 23.07.2012, 21:22
quelle

3 Antworten

2

Nach der Entdeckung der Ellipse in numpy / scipy-Arrays Ich habe es als rekursive Funktion implementiert:

%Vor%     
Dave 01.08.2012, 17:13
quelle
3

Vielleicht hast du etwas Glück mit einsum:

Ссылка

    
Nicolas Barbey 24.07.2012 12:29
quelle
0

Wenn ich davon ausgehe, dass ich Sie richtig verstanden habe, ist mir vor ein paar Wochen ein ähnliches Problem in meiner Forschung aufgefallen. Ich erkannte, dass das Kronecker-Produkt einfach ein äußeres Produkt ist, das Dimensionalität bewahrt. So könnten Sie so etwas tun:

%Vor%

Ich bin mir nicht sicher, welche Form Sie am Ende haben wollen, aber Sie könnten das Array-Slicing in Kombination mit np.rollaxis , np.reshape , np.ravel (usw.) verwenden, um Dinge nach Belieben zu mischen. Ich denke, der Nachteil ist, dass es zusätzliche Berechnungen durchführt. Dies kann oder kann nicht von Bedeutung sein, abhängig von Ihren Einschränkungen.

    
Michelle Lynn Gill 24.07.2012 13:56
quelle

Tags und Links