擅长:python、mysql、java
<p>由于您已经在使用numpy,因此可以将<code>np.convolve()</code>与长度为<code>n</code>的数组一起使用:</p>
<pre class="lang-py prettyprint-override"><code>>>> n = 5
>>> x = np.arange(10)
>>> np.max(np.convolve(x, np.ones(n, dtype=x.dtype), mode="valid"))
35
</code></pre>
<p>这具有对数组<code>x</code>的每个<code>n</code>-元素“窗口”执行<code>np.ones(n)</code>的点积的效果。来自<code>numpy.lib.stride_tricks</code>的<code>sliding_window_view()</code>是类似的,有助于解释:</p>
<pre class="lang-py prettyprint-override"><code>>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> windows = np.lib.stride_tricks.sliding_window_view(x, n)
>>> windows
array([[0, 1, 2, 3, 4],
[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6],
[3, 4, 5, 6, 7],
[4, 5, 6, 7, 8],
[5, 6, 7, 8, 9]])
>>> windows.sum(axis=1)
array([10, 15, 20, 25, 30, 35])
>>> np.convolve(x, np.ones(n, dtype=x.dtype), mode="valid")
array([10, 15, 20, 25, 30, 35])
</code></pre>