如何对含不等长列表的数组执行逐元素相加?np.sum方法无效求助
解决不规则嵌套列表逐元素对应相加(补0)的问题
给定不规则嵌套列表:
arr = [[7, 6], [4, 2, 7],[4,4,6,2]]
需要得到逐元素对应相加(长度不足的位置补0)的结果:[15,12,13,2],直接用np.sum(arr, axis=0)无法实现——因为原列表是不规则结构,转成numpy数组后会是object类型的一维数组,无法按axis=0进行逐位求和。以下是两种可行的解决方法:
方法一:Python原生实现
无需依赖第三方库,先统一所有子列表的长度(补0),再逐位求和:
arr = [[7, 6], [4, 2, 7],[4,4,6,2]] # 找到最长子列表的长度 max_length = max(len(sublist) for sublist in arr) # 给每个子列表补0到最长长度 padded_arr = [sublist + [0]*(max_length - len(sublist)) for sublist in arr] # 逐元素求和 result = [sum(items) for items in zip(*padded_arr)] print(result) # 输出: [15, 12, 13, 2]
方法二:结合Numpy实现
先将不规则列表转换为规则的numpy数组(补0),再调用求和方法:
import numpy as np arr = [[7, 6], [4, 2, 7],[4,4,6,2]] max_length = max(len(sublist) for sublist in arr) # 补0后转换为numpy数组 padded_np = np.array([sublist + [0]*(max_length - len(sublist)) for sublist in arr]) # 按axis=0求和并转为列表 result = padded_np.sum(axis=0).tolist() print(result) # 输出: [15, 12, 13, 2]
内容的提问来源于stack exchange,提问作者AAA
相关产品推荐
相关产品推荐

