<p>从<a href="https://docs.scipy.org/doc/scipy-0.18.1/reference/index.html" rel="nofollow noreferrer">^{<cd2>}</a>中使用<a href="https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.signal.convolve2d.html#scipy.signal.convolve2d" rel="nofollow noreferrer">^{<cd1>}</a>怎么样?</p>
<p>我的方法类似于Jason的方法,但是使用索引。</p>
<pre><code>def strideConv(arr, arr2, s):
return signal.convolve2d(arr, arr2[::-1, ::-1], mode='valid')[::s, ::s]
</code></pre>
<p>注意,内核必须反转。有关详细信息,请参见讨论<a href="https://stackoverflow.com/questions/40247760/scipy-convolve2d-outputs-wrong-values">here</a>和<a href="https://www.mathworks.com/matlabcentral/answers/74274-why-do-we-need-to-flip-the-kernel-in-2d-convolution?requestedDomain=true" rel="nofollow noreferrer">here</a>。否则使用<a href="https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.signal.correlate2d.html#scipy.signal.correlate2d" rel="nofollow noreferrer">^{<cd3>}</a>。</p>
<p>示例:</p>
<pre><code> >>> strideConv(arr, arr2, 1)
array([[ 91, 80, 100, 84, 88],
[ 99, 106, 126, 92, 77],
[ 69, 98, 91, 93, 117],
[ 80, 79, 87, 93, 61],
[ 44, 72, 72, 63, 74]])
>>> strideConv(arr, arr2, 2)
array([[ 91, 100, 88],
[ 69, 91, 117],
[ 44, 72, 74]])
</code></pre>