您可以使用该view_as_blocks函数将数组拆分为块(在scikit-image中).
对于2D数组,这将返回一个4D数组,其中逐行排序的块:
>>> import skimage.util as ski
>>> import numpy as np
>>> a = np.arange(16).reshape(4,4) # 4x4 array
>>> ski.view_as_blocks(a, (2,2))
array([[[[ 0, 1],
[ 4, 5]],
[[ 2, 3],
[ 6, 7]]],
[[[ 8, 9],
[12, 13]],
[[10, 11],
[14, 15]]]])
Run Code Online (Sandbox Code Playgroud)
沿最后两个轴取平均值将返回一个2D数组,其中每个块的均值:
>>> ski.view_as_blocks(a, (2,2)).mean(axis=(2,3))
array([[ 2.5, 4.5],
[ 10.5, 12.5]])
Run Code Online (Sandbox Code Playgroud)
注意:view_as_blocks通过修改步幅返回数组视图(它也适用于具有两个以上维度的数组).它纯粹在NumPy中使用as_strided,因此如果您无法访问scikit-image库,则可以从此处复制代码.