擅长:python、mysql、java
<p>您似乎在寻找的是4的块上的平均值,这是不能用<code>zoom</code>获得的,因为<code>zoom</code>使用了插值(参见其docstring)</p>
<p>要获得您显示的内容,请尝试以下操作</p>
<pre><code>import numpy as np
x = np.arange(16).reshape(4, 4)
xx = x.reshape(len(x) // 2, 2, x.shape[1] // 2, 2).transpose(0, 2, 1, 3).reshape(len(x) // 2, x.shape[1] // 2, -1).mean(-1)
print xx
</code></pre>
<p>这就产生了</p>
^{pr2}$
<p>或者,可以使用<code>sklearn.feature_extraction.image.extract_patches</code>来完成此操作</p>
<pre><code>from sklearn.feature_extraction.image import extract_patches
patches = extract_patches(x, patch_shape=(2, 2), extraction_step=(2, 2))
xx = patches.mean(-1).mean(-1)
print xx
</code></pre>
<p>但是,如果您的目标是以一种优雅的方式对图像进行子采样,那么对图像的块取平均值是<em>而不是</em>正确的方法:它很可能会导致锯齿效应。在这种情况下,您应该做的是使用<code>scipy.ndimage.gaussian_filter</code>(例如<code>sigma=0.35 * subsample_factor</code>)稍微平滑图像,然后简单地通过索引<code>[::2, ::2]</code>对图像进行子采样</p>