2D数组按间隔行分组对应元素求和的通用实现方法咨询
通用实现方案
纯Python原生版本(无第三方依赖)
直接通过行索引取模定位累加位置,适配任意输入行数,无需提前确认分组总数:
def calc_group_sum(data: list[list[int]], k: int) -> list[list[int]]: # 初始化结果数组:k行,列数与输入行一致,初始值为0 col_num = len(data[0]) res = [[0 for _ in range(col_num)] for _ in range(k)] # 遍历所有行完成累加 for row_idx, row in enumerate(data): target_row = row_idx % k for col_idx, val in enumerate(row): res[target_row][col_idx] += val return res # 用你提供的示例数据测试 data = [[1, 7], [2, 8], [3, 9], [4, 10], [5, 11], [6, 12], [13, 14], [15, 16]] k = 2 B = calc_group_sum(data, k) print(B) # 输出:[[22, 41], [27, 46]],完全符合预期的计算规则
Numpy版本(适合大规模数据运算)
如果允许使用数值计算库,仅需两行核心代码即可实现:
import numpy as np def calc_group_sum_np(data: list[list[int]], k: int) -> np.ndarray: arr = np.array(data) # 先按k行一组重构维度,再对分组维度求和 return arr.reshape(-1, k, arr.shape[1]).sum(axis=0) # 测试同上 B = calc_group_sum_np(data, 2) print(B.tolist()) # 输出同样为[[22, 41], [27, 46]]
内容的提问来源于stack exchange,提问作者NycoElm
相关产品推荐
相关产品推荐

