擅长:python、mysql、java
<p>一种方法是排列轴。因此,我们可以将相关轴从<code>matrix_nd</code>推到最后,让它与1D数组相乘,最后将轴置换回来。因此,对于给定的<code>axis</code>,在<code>matrix_nd</code>中,我们需要将1D数组相乘,它将是-</p>
<pre><code>np.moveaxis(np.moveaxis(matrix_nd,axis,-1)*array_1d,-1,axis)
</code></pre>
<p>同样,我们不需要将1D数组重塑为<code>(1,1,1,2,1)</code>。我们可以将其重塑为仅相关轴,即<code>(2,1)</code>和<code>broadcasting</code>仍然有效,因为前导轴是自动广播的。因此,另一种方法是-</p>
<pre><code>matrix_nd*array_1d.reshape((-1,)+(1,)*(matrix_nd.ndim-axis-1))
</code></pre>