成绩计算程序开发:实现5个最高与最低成绩的计算需求
数据集成绩统计程序扩展实现
原代码问题修正
原代码中max(nums)[0]与min(nums)[0]仅取了各子列表第一个元素的最大/最小值,并非所有成绩中的极值。需先将二维成绩列表扁平化,才能正确统计整体成绩的各项指标。
扩展功能实现
1. 获取5个最高成绩
将所有成绩合并为一维列表后,可通过高效分区或排序的方式提取前5个最高值;
2. 获取5个最低成绩
同理,扁平化成绩列表后提取前5个最低值。
完整代码实现
# Evan Gertis # 09/15/2022 # frequency_distribution.py import numpy as np nums = [[68,84,75,82,68,90,62,88,76,93],[73, 79, 88, 73, 60, 93, 71, 59, 85, 75],[61,65,75, 87,74, 62, 95, 78, 63, 72],[66,78,82,75,94,77,69,74,68,60],[96,78,89,61,75,95,60,79,83,71],[79,62,67,97,78,85,76,65,71,75],[65,80,73,57,88,78,62,76,53,74],[86,67,73,81,72,63,76,75,85,77]] # 扁平化二维成绩列表,得到所有成绩的一维数组 all_scores = np.array(nums).flatten() # 计算基础指标:最高成绩、最低成绩、成绩范围 max_score = all_scores.max() min_score = all_scores.min() score_range = max_score - min_score print("The highest grade is:") print(max_score) print("The lowest grade is:") print(min_score) print("The range is:") print(score_range) # 获取并输出5个最高成绩(降序排列) top_5 = np.partition(all_scores, -5)[-5:] top_5_sorted = np.sort(top_5)[::-1] print("\nTop 5 highest grades:") print(top_5_sorted) # 获取并输出5个最低成绩(升序排列) bottom_5 = np.partition(all_scores, 5)[:5] bottom_5_sorted = np.sort(bottom_5) print("\nBottom 5 lowest grades:") print(bottom_5_sorted)
关键代码说明
np.array(nums).flatten():将二维列表转换为一维numpy数组,简化批量统计操作;np.partition:相比全排序更高效,仅将数组分为指定位置的左右两部分,适合快速提取前N/后N个元素;- 排序步骤:对提取的极值组进行二次排序,输出更直观的顺序。
内容的提问来源于stack exchange,提问作者Evan Gertis
相关产品推荐
相关产品推荐

