擅长:python、mysql、java
<p>比如说:</p>
<pre><code>def running_avg(data, ws):
tmp = np.cumsum(data, axis=-1, dtype='float')
ra = (tmp[..., ws:] - tmp[..., :-ws]) / ws
return ra
</code></pre>
<p>这将取最后一个轴上的平均值,如果你想变得更聪明,你可以让函数取一个轴参数,然后取任意轴上的平均值。在</p>
<p>更新</p>
<p>我相信这个版本和你上面的代码是一致的。在</p>
^{pr2}$
<p>对于更一般的问题,使用numpy内置函数(如cumsum)会有所帮助,因为它们已经这样做了,但是如果必须循环,可以使用A=np.零(A.shape)获取与输入相同形状的数组,然后使用[…,i]始终对最后一个维度进行操作,或者使用[…,i,:]始终对倒数第二个维度进行操作,依此类推。有时人们也会做数据=np.滚动(data,axis)将轴移动到开始位置,然后使用[i]对第一个维度进行操作,如果需要,将轴向后移动。在</p>
<p>更新2:</p>
<p>我刚想起来为什么以下是一个非常坏的主意(至少在这种情况下):</p>
<pre><code>ra[..., ws:] -= ra[..., :-ws]
</code></pre>
<p>您应该改用这个:</p>
<pre><code>ra[..., ws:] = ra[..., ws:] - ra[..., :-ws]
</code></pre>