如何计算字典中多列表各列数值的平均值?
计算字典中列表的列平均值
我创建了一个包含多组键值对的字典,其值为包含数字的列表:
PLE_dict = { "Task_1": [1, 2, 8], "Task_2": [5, 1, 9], "Task_3": [1, 1, 3], "Task_4": [5, 3 ,5], }
我还定义了一个空列表:Task_mean = []
我的目标是计算该字典中四个列表的“列”平均值,并将结果存入Task_mean列表。具体来说,Task_mean中的每个元素对应字典中各列的平均值,预期结果为:Task_mean = [3, 1.75, 6.25]
我尝试了以下代码,但遇到了问题:
for key, item in PLE_dict.items(): mean_column = np.mean(item[0])
问题分析
你当前的代码存在两处核心问题:
- 仅提取了每个列表的第一个元素(
item[0])计算均值,没有处理列的聚合逻辑 - 未将计算结果存入
Task_mean列表
解决方案
方法一:用NumPy高效实现
把字典中的列表转为数组后,直接按列计算均值:
import numpy as np PLE_dict = { "Task_1": [1, 2, 8], "Task_2": [5, 1, 9], "Task_3": [1, 1, 3], "Task_4": [5, 3 ,5], } # 提取所有值并转换为NumPy数组 task_array = np.array(list(PLE_dict.values())) # axis=0表示按列计算均值,最后转为列表 Task_mean = task_array.mean(axis=0).tolist() print(Task_mean) # 输出: [3.0, 1.75, 6.25]
方法二:纯Python实现(无需依赖第三方库)
利用zip函数聚合对应列的元素,再逐个计算均值:
PLE_dict = { "Task_1": [1, 2, 8], "Task_2": [5, 1, 9], "Task_3": [1, 1, 3], "Task_4": [5, 3 ,5], } Task_mean = [] # zip(*...) 将所有列表的对应位置元素打包成元组,比如第一列是(1,5,1,5) for column in zip(*PLE_dict.values()): mean_val = sum(column) / len(column) Task_mean.append(mean_val) print(Task_mean) # 输出: [3.0, 1.75, 6.25]
内容的提问来源于stack exchange,提问作者Philipp
相关产品推荐
相关产品推荐

