擅长:python、mysql、java
<p>看起来你在试图计算指数移动平均数(滚动平均数),但忘记了除法。如果是这样的话,你可能想看看<a href="https://stackoverflow.com/questions/14313510/moving-average-function-on-numpy-scipy">this</a>SO问题。同时,这里有一个快速的简单移动平均值,它使用来自被引用链接的<code>cumsum()</code>函数。在</p>
<pre><code>def moving_average(a, n=14) :
ret = np.cumsum(a, dtype=float)
ret[n:] = ret[n:] - ret[:-n]
return ret[n - 1:] / n
</code></pre>
<p>如果不是这样,并且您确实希望描述函数,那么可以通过在迭代中使用<code>external_loop</code>标志来提高迭代速度。从numpy文档中:</p>
<blockquote>
<p>The nditer will try to provide chunks that are as large as possible to
the inner loop. By forcing ‘C’ and ‘F’ order, we get different
external loop sizes. This mode is enabled by specifying an iterator
flag.</p>
<p>Observe that with the default of keeping native memory order, the
iterator is able to provide a single one-dimensional chunk, whereas
when forcing Fortran order, it has to provide three chunks of two
elements each.</p>
</blockquote>
^{pr2}$