Ellipsenübertragung in numpy.einsum

Ich habe ein Problem damit, zu verstehen, warum Folgendes nicht funktioniert:

Ich habe eine ReiheVorfaktor das kann dreidimensional oder sechsdimensional sein. Ich habe eine ReiheDipole das hat vier Dimensionen. Die ersten drei Dimensionen vonDipole stimmen mit den letzten drei Dimensionen von übereinVorfaktor.

Da ich die Form nicht kenneVorfaktorIch benutze eine Ellipse, um die drei optionalen Dimensionen in zu berücksichtigenVorfaktor:

numpy.einsum('...lmn,lmno->...o', prefactor, dipoles)

(In diesem Beispiel ist prefactor.shape (1, 1, 1, 160, 160, 128) und dipoles.shape (160, 160, 128, 3). Beim Ausführen erhalte ich den Fehler:

Operand 1 hatte nicht genügend Dimensionen, um mit dem Broadcast übereinzustimmen, und konnte nicht erweitert werden, da sowohl am Anfang als auch am Ende Einstein-Summen-Indizes angegeben wurden

Es funktioniert jedoch auch, wenn ich dem zweiten Term ein Auslassungszeichen hinzufüge:

numpy.einsum('...lmn,...lmno->...o', prefactor, dipoles)

Nur, dass ich nicht verstehe, warum, weil es dort keine Auslassungspunkte geben sollte. Weiß jemand, was hier los ist?

Dieselbe Frage wurde an gestellthttp://comments.gmane.org/gmane.comp.python.numeric.general/53705 aber es gibt noch keine zufriedenstellende Antwort.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage