Emisja wielokropka w numpy.einsum

Mam problem ze zrozumieniem, dlaczego poniższe nie działają:

Mam tablicępreaktor które mogą być trójwymiarowe lub sześciowymiarowe. Mam tablicędipole który ma cztery wymiary. Pierwsze trzy wymiarydipole pasują do trzech ostatnich wymiarówpreaktor.

Jak nie znam kształtupreaktor, Używam Elipsa do uwzględnienia trzech opcjonalnych wymiarów wpreaktor:

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

(W tym przykładzie prefactor.shape to (1, 1, 1, 160, 160, 128), a dipoles.shape to (160, 160, 128, 3) .W trakcie wykonywania pojawia się błąd:

operand 1 nie miał wystarczających wymiarów, aby pasować do emisji, i nie mógł zostać rozszerzony, ponieważ indeksy sumy einsteina zostały określone zarówno na początku, jak i na końcu

Działa to jednak, gdy dodam elipsę do drugiego terminu:

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

Tylko, że nie rozumiem dlaczego, bo tam nie powinno być żadnej potrzeby. Czy ktoś wie, co tu się dzieje?

To samo pytanie zostało zadane whttp://comments.gmane.org/gmane.comp.python.numeric.general/53705 ale nie ma jeszcze satysfakcjonującej odpowiedzi.

questionAnswers(1)

yourAnswerToTheQuestion