回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试着用for循环实现2D阵列的跨步卷积,即</p>
<pre><code>arr = np.array([[2,3,7,4,6,2,9],
[6,6,9,8,7,4,3],
[3,4,8,3,8,9,7],
[7,8,3,6,6,3,4],
[4,2,1,8,3,4,6],
[3,2,4,1,9,8,3],
[0,1,3,9,2,1,4]])
arr2 = np.array([[3,4,4],
[1,0,2],
[-1,0,3]])
def stride_conv(arr1,arr2,s,p):
beg = 0
end = arr2.shape[0]
final = []
for i in range(0,arr1.shape[0]-1,s):
k = []
for j in range(0,arr1.shape[0]-1,s):
k.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(np.sum(arr1[beg+i : end+i, beg+j:end+j] * (arr2)))
final.append(k)
return np.array(final)
stride_conv(arr,arr2,2,0)
</code></pre>
<p>这将生成3*3数组:</p>
<pre><code>array([[ 91, 100, 88],
[ 69, 91, 117],
[ 44, 72, 74]])
</code></pre>
<p>是否有numpy函数或scipy函数来执行相同的操作?我的方法不太好。我如何将其矢量化?</p>