我有一个具有列(日、月、年、雨、温度等)的天气数据数组。任务是将每年夏天的降雨量相加(将每年夏天的总降雨量与其所在年份相乘)。
为了对所需的元素求和,以便将每年的夏季元素相加在一起,我将不得不使用for循环(有超过80年,因此手动查找条目的数量对于重复所有年份的sum(rainfallsummer)可能是不可行的)。我还列出了相关年份(但不是只过滤夏季条目)。我曾尝试创建一个循环,将夏季的元素与同一年相加,但未获成功。寻找任何建议,我可以尝试这个。谢谢。
数据样本(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来避免计算和保存夏季降雨量的总和,但我在这方面也没有运气(“权重必须与a的形状相同”(a是夏季,我将其作为直方图收集数据的数组))。虽然它不起作用,但它可能有助于了解我的思路。
np.histogram(summer, bins = years, range = (1942, 2020) , weights = rainfall[summer])我想说的是,我对使用数组进行数据操作还很陌生,所以如果有任何帮助,我将不胜感激。至于最小的可重现示例,我已经包含了代码中最重要的部分,但我仍然不确定正确的方法应该是什么(如前面讨论的那样创建字典,按照建议使用直方图等),所以我在这方面也很简短。谢谢。
发布于 2020-10-16 01:14:21
经过几天的努力,我找到了一个解决方案,使用的是一种相对简单的方法。我认为我试图在一个步骤中得到所有部分的答案,这让问题变得过于复杂。我没有遍历数组来创建字典,而是使用for循环来创建夏季数组的年份和总和降雨量的列表。我意识到了一条捷径,即每年的夏季发生在整个夏季数组的92个条目内(并发现切片可能比单独的i或整数更复杂)。
rains = []
for i in range(0, 79, 1):
y = sum(rainfall[summer][i*92:i*92 + 92])
rains.append(y)用于必要的年限;
years = []
for i in range(1942, 2021, 1):
years.append(i)然后使用plt.plot(年份,雨量)得到了这个漂亮的图表:rainfall
感谢其他贡献者的帮助。我无法描述我的joy看到一个相当平凡的图表。
https://stackoverflow.com/questions/64362093
复制相似问题