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

如何在二维列表中按n行n列分块计算均值生成新列表?

二维列表n×n分块均值计算方案

实现代码

original_list = [
    [1,1,1,2,2,2,3,3,3],
    [4,4,4,5,5,5,6,6,6],
    [7,7,7,8,8,8,9,9,9],
    [0,0,0,1,1,1,2,2,2],
    [3,3,3,4,4,4,5,5,5],
    [6,6,6,7,7,7,8,8,8]
]
n = 3

# 计算总行数、总列数,确定分块数量
total_rows = len(original_list)
total_cols = len(original_list[0])
row_blocks = total_rows // n
col_blocks = total_cols // n

result = []
# 遍历每个行块
for i in range(row_blocks):
    current_row = []
    # 遍历每个列块
    for j in range(col_blocks):
        # 提取当前n×n的分块
        block = [row[j*n : (j+1)*n] for row in original_list[i*n : (i+1)*n]]
        # 计算分块内所有元素的总和
        total = sum(sum(sub_row) for sub_row in block)
        # 计算均值(整数除法,符合示例结果要求)
        mean = total // (n * n)
        current_row.append(mean)
    result.append(current_row)

print(result)  # 输出: [[4, 5, 6], [3, 4, 5]]

核心步骤说明

  • 分块划分:通过总行数/列数除以n,确定行、列方向的分块数量(示例中6行分2块,9列分3块)
  • 切片提取分块:用列表切片original_list[i*n : (i+1)*n]提取行块,再对每行做列切片得到n×n的完整分块
  • 均值计算:先嵌套求和得到分块内所有元素的总和,再除以n²(分块总元素数)得到均值,这里用整数除法匹配示例的整数结果

如果需要处理行数/列数不能被n整除的场景,可以在循环中加入边界判断,对剩余不足n行/列的部分单独处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:17:14