目的:想要实现从一个1616的矩阵中依次取44的一个块大小
常规做法就是写一个for循环,如果数据量太大,速度就会减慢。
调用包的做法;
包:from skimage.util.shape import view_as_windows
a=np.random.randint(1,10,(16,16))
#input_array : 要切割的数据;window_shape:切割窗口大小;step:窗口移动的步幅
window_shape = (4,4)
window_clip = view_as_windows(a, window_shape, 4)
print(window_clip)
结果如下:
后面没写完整就暂时省略。
skimage另外一个库;
from skimage.util.shape import view_as_blocks
效果相同:
如下:
print('----------这是一个分割线 -------------')
b=view_as_blocks(a,block_shape=(4,4))
print(b)
结果如下:
取块里面的值:
print('------输出块里面的值-----')
print(b[0,0])#输出第一个块
print(b[0,1])#输出第二个块
print(b[0,0,0,2])#输出第一个块的第1行第3列元素的值
结果如下: