擅长:python、mysql、java
<p>只在大小为(4,4,4)的非重叠子矩阵上寻找卷积。下面是您的操作方法(可能是最快、占用内存最少的,因为它共享内存,并且不会对任何不必要的子数组进行额外计算):</p>
<pre><code>from skimage.util.shape import view_as_windows
kernel = np.ones((4,4,4))
sub_matrices = view_as_windows(arr, kernel.shape, kernel.shape)
#Do convolution on extracted non-overlapping sub-matrices of shape (4,4,4)
output = np.einsum('ijk,mnlijk->mnl',kernel,sub_matrices)
</code></pre>
<p>如果您不希望将输出放大到内核中的点总和,只需将<code>output</code>除以<code>kernel.size</code>(即<code>output/=kernel.size</code>)</p>
<p>例如:</p>
<pre><code>arr=np.ones((256,256,256))
</code></pre>
<p>output.shape:</p>
<pre><code>(64, 64, 64)
</code></pre>