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

Python如何计算字典内同名模型前缀列表对应索引位置元素的平均值

实现方案

处理逻辑

  • 遍历外层列表的每一条时间序列数据,提取时间序列ID和对应的所有模型运行结果
  • 对模型运行结果的键按下划线拆分,提取模型名称作为分组依据,将相同模型不同运行次数的列表归为同一组
  • 对同一组下的所有列表,按索引位置配对元素,计算每组配对元素的平均值,组装为新的列表
  • 最后按要求的结构拼接结果即可

完整代码

# 输入数据
input_data = [
    {'NN3-001': {'diffe_1':[1,2,3,4],'mas_1':[10,20,30,40],'diffe_2':[5,6,7,8],'mas_2':[50,60,70,80]}},
    {'NN3-002': {'diffe_1':[14,15,16,17],'mas_1':[100,200,300,400],'diffe_2':[18,19,20,21],'mas_2':[500,600,700,800]}}
]

result = []
for ts_item in input_data:
    # 获取当前时间序列ID和对应的模型数据
    ts_id, model_raw = next(iter(ts_item.items()))
    model_groups = {}
    # 按模型名分组
    for run_key, val_list in model_raw.items():
        model_name = run_key.split("_")[0]
        if model_name not in model_groups:
            model_groups[model_name] = []
        model_groups[model_name].append(val_list)
    # 计算每个模型的索引平均值
    model_avg = {}
    for name, lists in model_groups.items():
        # 按索引配对所有列表的元素,计算平均
        avg_list = [sum(pos_vals) / len(lists) for pos_vals in zip(*lists)]
        # 示例输出为整数,这里做类型转换,不需要可以删除
        model_avg[name] = list(map(int, avg_list))
    result.append({ts_id: model_avg})

# 输出结果
print(result)

运行结果

执行上述代码后输出的结果和你期望的结构完全一致:

[{'NN3-001': {'diffe': [3, 4, 5, 6], 'mas': [30, 40, 50, 60]}}, {'NN3-002': {'diffe': [16, 17, 18, 19], 'mas': [300, 400, 500, 600]}}]

内容的提问来源于stack exchange,提问作者João David de Freitas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:09:00