You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用numpy高效将二维数组分割为重叠瓦片并转换为目标格式

Numpy高性能数组转换方案

你需要实现的是原数组所有相邻2×2滑动窗口的提取与展平,以下方案基于numpy数组视图实现,无额外数据拷贝,适合处理超大维度数组:

核心代码实现

numpy 1.20.0+ 版本(推荐)

使用官方封装的滑动窗口视图接口,无需手动计算步长:

import numpy as np
a = np.arange(1, 49).reshape(6, 8)
# 生成所有2×2滑动窗口,输出shape为(5,7,2,2)
windows = np.lib.stride_tricks.sliding_window_view(a, window_shape=(2, 2))
# 调整维度得到目标数组b
b = windows.reshape(-1, 4)

执行后可直接验证:np.array_equal(b, 你给出的目标b数组) 返回值为True。

低版本numpy兼容实现

使用as_strided手动构造视图:

import numpy as np
from numpy.lib.stride_tricks import as_strided
a = np.arange(1, 49).reshape(6, 8)
row_num, col_num = a.shape
win_h, win_w = 2, 2
# 计算输出维度
out_row = row_num - win_h + 1
out_col = col_num - win_w + 1
# 构造滑动窗口视图
windows = as_strided(
    a,
    shape=(out_row, out_col, win_h, win_w),
    strides=a.strides * 2
)
b = windows.reshape(-1, win_h * win_w)

注意:as_strided不做边界校验,需确保shape和strides参数计算准确,避免访问越界。

内容的提问来源于stack exchange,提问作者Omid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:06:00