Elipsis emitiendo en numpy.einsum

Tengo problemas para entender por qué lo siguiente no funciona:

Tengo una matrizprefactor Eso puede ser tridimensional o de seis dimensiones. Tengo una matrizdipolos Que tiene cuatro dimensiones. Las tres primeras dimensiones dedipolos coincide con las últimas tres dimensiones deprefactor.

Como no sé la forma deprefactor, Estoy usando una elipsis para tener en cuenta las tres dimensiones opcionales enprefactor:

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

(En este ejemplo, prefactor.shape es (1, 1, 1, 160, 160, 128) y dipoles.shape es (160, 160, 128, 3). Al ejecutarlo, aparece el error:

El operando 1 no tenía suficientes dimensiones para coincidir con la transmisión, y no pudo extenderse porque los subíndices de suma de einstein se especificaron tanto al inicio como al final

Sin embargo, funciona cuando agrego puntos suspensivos al segundo término también:

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

Solo que no entiendo por qué, porque no debería haber necesidad de una elipsis allí. ¿Alguien sabe lo que está pasando aquí?

La misma pregunta se ha hecho enhttp://comments.gmane.org/gmane.comp.python.numeric.general/53705 pero no hay una respuesta satisfactoria todavía.

Respuestas a la pregunta(1)

Su respuesta a la pregunta