Python二维数组求最值:降雨统计周/年总量及周最值实现
52周降雨监测数据统计功能补全方案
你现有代码已经完成了二维数组初始化、CSV数据读取、全年降雨总量累加的逻辑,剩下两个功能直接基于已加载完成的rainfall_data二维数组实现即可,不需要改动原有逻辑。
核心实现逻辑
- 各周降雨总量:二维数组每一行对应单周7天的日降雨量,直接对每行做求和就能得到单周总降雨量,用Python内置
sum()函数实现即可,不需要手动写循环累加。 - 单周降雨量最值:同样针对每行数据,直接调用内置
min()、max()函数,就能直接获取单周内日降雨量的最小值、最大值,不需要手动逐元素比较。
完整可运行代码
import csv # 初始化52行7列的二维数组,与原有初始化逻辑一致 rainfall_data = [[0.0 for _ in range(7)] for _ in range(52)] # 逐行读取CSV填充数据,保留原有读取逻辑 with open('annual_rainfall.csv', 'r', encoding='utf-8') as f: csv_reader = csv.reader(f) for week_index, row in enumerate(csv_reader): # 将CSV读取的字符串值转为浮点数存入数组 rainfall_data[week_index] = [float(daily_rain) for daily_rain in row] # 原有已实现:全年降雨总量累加 annual_total = 0.0 for week_data in rainfall_data: for daily_val in week_data: annual_total += daily_val # 补全功能1:计算各周降雨总量 weekly_totals = [] for week_data in rainfall_data: weekly_totals.append(sum(week_data)) # 补全功能3:计算单周降雨量最小值、最大值 weekly_extremes = [] for week_data in rainfall_data: weekly_min = min(week_data) weekly_max = max(week_data) weekly_extremes.append( (weekly_min, weekly_max) ) # 结果输出 print("=== 各周降雨总量(单位:mm) ===") for week_num, total in enumerate(weekly_totals, start=1): print(f"第{week_num}周: {total:.1f}") print(f"\n全年累计降雨量: {annual_total:.1f}mm") print("\n=== 各周降雨量极值(单位:mm) ===") for week_num, (min_rain, max_rain) in enumerate(weekly_extremes, start=1): print(f"第{week_num}周: 日降雨量最小值{min_rain:.1f},最大值{max_rain:.1f}")
注意事项:如果你的CSV文件包含表头行、空单元格或者异常非数值内容,需要在读取数据的步骤增加过滤、异常捕获逻辑,避免浮点数转换报错;如果对降雨数据计算精度要求高,可以替换为
decimal类型做数值计算,减少浮点运算带来的精度误差。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

