【发布时间】:2020-10-14 22:00:38
【问题描述】:
我有一组带有列的天气数据(日、月、年、雨、温度等)。任务是计算每个夏天的降雨量(每个夏天的总降雨量将与其年份进行对比)。
要对所需元素进行求和,以便将每年的夏季元素加在一起,我将不得不使用 for 循环(已有 80 多年,因此手动查找条目的数量可能不可行) (rainfall[summer][0:90]) 重复了所有年份)。我还列出了相关年份的列表(但不仅仅将夏季条目过滤到这些年份中)。我没有成功地尝试制作一个循环,将同年夏天的元素相加。 寻找有关如何尝试此操作的任何建议。谢谢。
数据样本(1942 年 1 月的第一天):
day, month, year, min_temp (C), max_temp (C), rainfall (mm), windspeed (knot)
1,1,1942,6.8,9.7,0.0,17.2
2,1,1942,7.9,9.9,0.1,15.2
3,1,1942,8.9,11.2,1.5,14.0
4,1,1942,2.7,9.2,3.5,17.0
5,1,1942,-0.8,3.5,0.6,13.0
6,1,1942,0.7,5.1,0.0,9.7
7,1,1942,0.5,7.1,0.0,10.3
这些是使用(例如,日期列)排列的:
day = day.astype(int)
我首先使用以下方法收集夏季条目:
summer = np.where((month == 6) | (month == 7) | (month == 8 ) )
其中第一个元素是 1942 年 1 月 6 日的数据。 在此之后,我将夏季条目分组到他们的年份几乎没有成功,并且只使用简单的 for 循环创建了相关年份的简单列表。
仅供参考,在类似的任务中,我会使用编译字典,然后使用键和值作为绘图的数据点。
另外,作为参考,前 90 个条目(对应于第一个夏天)总和为:
sum(rainfall[summer][0:90])
在第一个夏季组中输出正确的降雨总和。
Frank Yellin(在下面的线程中)建议使用 np.histogram 来避免计算和保存夏季降雨量的总和,但我也没有运气(“权重必须相同shape as a"(a 是夏天,我认为它是直方图从中收集数据的数组))。虽然没用,但看看我的思路可能会有用。
np.histogram(summer, bins = years, range = (1942, 2020) , weights = rainfall[summer])
我还应该说,我对使用数组进行数据操作还是很陌生,因此感谢您提供任何帮助。至于一个最小可重现的例子,我已经包含了我拥有的代码中最重要的部分,但我仍然不确定正确的方法应该是什么(如前所述创建字典,使用建议的直方图等),所以我在这方面也很短。谢谢。
【问题讨论】:
-
您能否包含您的代码的 sn-p 以及您正在使用的数据的小版本?这使得给出答案变得更加容易。
-
为了清晰起见,更新了一些数据和更多代码。
-
您的数据在 numpy 之外?请提供minimal reproducible example,以及当前和预期的输出。