擅长:python、mysql、java
<p>大部分工作可以由<code>np.ix_</code>完成,只有<code>wo</code>需要一些手工工作。我缩短了变量名:</p>
<pre><code>>>> import numpy as np
# sizes
>>> i, j ,k = 2, 3, 4
# fake data
>>> od = np.arange(i)
>>> wo = np.arange(k*i).reshape(k, i)
>>> ds = np.arange(k)
>>> ou = np.arange(j)
# prepare for broadcasting
>>> OD, OU, DS = np.ix_(od, ou, ds)
>>> WO = wo.T[:, None, :]
# now the shapes are:
# OD (i, 1, 1)
# OU (1, j, 1)
# DS (1, 1, k)
# WO (i, 1, k)
# do the calculation and check shape
>>> (-OD*WO*DS*OU).shape
(2, 3, 4)
</code></pre>