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

Python如何借助3D数组完成指定规则的2D数组填充转换

解决方法

你的需求本质是将原数组按每2行切分为若干个2行2列的子块后,对所有子块的对应位置元素求和,最终得到2行2列的结果数组。

原生Python实现(无需第三方库)

你原来生成子块的逻辑是正确的,只需要调整后续求和的逻辑即可:

data = [[1, 7],
        [2, 8],
        [3, 9],
        [4, 10],
        [5, 11],
        [6, 12],
        [13, 14],
        [15, 16]]

m = 2
# 按每2行切分得到所有2x2子块
block_list = [data[idx: idx + m] for idx in range(0, len(data), m)]

# 初始化结果数组为2行2列的零数组
result = [[0]*2 for _ in range(2)]

# 遍历所有子块累加对应位置的值
for block in block_list:
    for row in range(2):
        for col in range(2):
            result[row][col] += block[row][col]

print(result)

运行输出为 [[22, 41], [27, 46]],和你需要的加法计算结果完全匹配。该逻辑可以直接适配更大的数据集,只要数据集符合2行一组的排列规则即可。

高效实现(适合大规模数组)

如果需要处理数据量较大的场景,推荐使用numpy库实现,代码更简洁执行效率更高:

import numpy as np

data = [[1, 7],
        [2, 8],
        [3, 9],
        [4, 10],
        [5, 11],
        [6, 12],
        [13, 14],
        [15, 16]]

# 调整数组形状为(子块数量, 2, 2)后按子块维度求和
result = np.array(data).reshape(-1, 2, 2).sum(axis=0).tolist()
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 21:57:01