我有一个问题,理解为什么以下不起作用:
我有一个可以是三维或六维的阵列前因子.我有一个有四个维度的阵列偶极子.前三个维度偶极场比赛的最后三个维度前因子.
由于我不知道前因子的形状,我使用省略号来说明前因子中的三个可选维度:
numpy.einsum('...lmn,lmno->...o', prefactor, dipoles)
Run Code Online (Sandbox Code Playgroud)
(在这里的示例中,prefactor.shape是(1,1,1,160,160,128),dipoles.shape是(160,160,128,3).执行时,我得到错误:
操作数1没有足够的尺寸来匹配广播,并且无法扩展,因为在开头和结尾都指定了爱因斯坦和下标
但是,当我向第二个术语添加省略号时,它确实有效:
numpy.einsum('...lmn,...lmno->...o', prefactor, dipoles)
Run Code Online (Sandbox Code Playgroud)
只是我不明白为什么,因为那里不应该有省略号.有人知道这里发生了什么吗?
在http://comments.gmane.org/gmane.comp.python.numeric.general/53705上也提出了同样的问题,但还没有令人满意的答案.