如何用Python将二维数组分割为带重叠的N*N小二维数组并存入字典?
带重叠的二维数组分割实现(基于NumPy)
要实现带重叠的N*N窗口分割并生成目标字典,核心是通过滑动窗口遍历合法的左上角索引,提取对应子数组即可,具体实现如下:
代码示例
import numpy as np # 定义原数组 arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) window_size = 2 # N*N窗口的大小 # 初始化结果字典 result_dict = {} # 遍历所有合法的左上角行索引 for row_start in range(arr.shape[0] - window_size + 1): # 遍历所有合法的左上角列索引 for col_start in range(arr.shape[1] - window_size + 1): # 提取窗口内的子数组,转成列表存入字典 sub_array = arr[row_start:row_start+window_size, col_start:col_start+window_size].tolist() result_dict[(row_start, col_start)] = sub_array # 输出结果 print(result_dict)
关键说明
- 合法索引范围:行索引从
0到arr.shape[0]-window_size,列索引同理,确保窗口不会超出原数组边界。 - 重叠程度控制:示例中步长为1(即相邻窗口重叠
window_size-1个元素),如果需要调整重叠度,只需修改range的步长参数。比如步长设为window_size就是无重叠分割,和你已掌握的逻辑一致。 - 格式转换:用
tolist()将NumPy数组转为普通列表,匹配示例中的输出格式。
内容的提问来源于stack exchange,提问作者Yilia SHEN
相关产品推荐
相关产品推荐

