您需要一个窗口视图:
from numpy.lib.stride_tricks import as_stridedarr = np.arange(1, 25).reshape(4, 6) % 10sub_shape = (3, 3)view_shape = tuple(np.subtract(arr.shape, sub_shape) + 1) + sub_shapearr_view = as_strided(arr, view_shape, arr.strides * 2arr_view = arr_view.reshape((-1,) + sub_shape)>>> arr_viewarray([[[[1, 2, 3], [7, 8, 9], [3, 4, 5]], [[2, 3, 4], [8, 9, 0], [4, 5, 6]], ... [[9, 0, 1], [5, 6, 7], [1, 2, 3]], [[0, 1, 2], [6, 7, 8], [2, 3, 4]]]])
这样做的好处在于,您无需复制任何数据,而只是以不同的方式访问原始数组的数据。对于大型阵列,这可以节省大量内存。



