擅长:python、mysql、java
<pre><code>In [601]: C
Out[601]: array([436., 534., 644., 766., 900.])
</code></pre>
<p>这是<code>einsum</code>的自然现象。我像您一样使用<code>i</code>来表示传递到结果的索引。<code>j</code>和{<cd4>}是用于乘积和的指数。在</p>
^{pr2}$
<p>它可能也可以用<code>mutmul</code>来完成,尽管它可能需要添加一个维度和后一个压缩。在</p>
<p>使用<code>dot</code>的方法所做的工作比必要的多得多。<code>diag</code>抛出了很多值。在</p>
<p>要使用<code>matmul</code>,我们必须使<code>i</code>维成为3d数组中的第一个。这是“被动”的结果:</p>
<pre><code>In [603]: A.T[:,None,:]@B@A.T[:,:,None]
Out[603]:
array([[[436]], # (5,1,1) result
[[534]],
[[644]],
[[766]],
[[900]]])
In [604]: (A.T[:,None,:]@B@A.T[:,:,None]).squeeze()
Out[604]: array([436, 534, 644, 766, 900])
</code></pre>
<p>或者索引掉额外的维度:<code>(A.T[:,None,:]@B@A.T[:,:,None])[:,0,0]</code></p>