Python中基于年度小时维度的数组均值计算问题
问题与需求
- 现有两组数据:
- Numpy 3D数组
volume:形状为(1, 87648, 100),数据类型为float64; - Pandas DatetimeIndex数组
datetime_array:形状为(87648,)。
- Numpy 3D数组
- 数据关联:
volume沿axis=1的维度与datetime_array的逐小时时序一一对应,总时长为10年(包含2个闰年),总数据量计算方式为8760*8 + 8784*2 = 87648,无夏令时,每天固定24个数据点。 - 计算目标:生成跨10年的年度小时均值数组——对10年中每年的同一时刻(如每年1月1日0点、1月1日1点……)的数据取平均,最终输出形状为
(1, 8784, 100)的float64类型3D数组。其中2月29日的24个小时各基于2个数据点求平均,其余小时基于10个数据点。
现有尝试代码(存在问题)
hour_of_year = np.array([dt.hour + (dt.dayofyear - 1) * 24 for dt in datetime_array]) volume_by_hour = np.reshape(volume, (volume.shape[0], volume.shape[1] / 24, volume.shape[2], 24)) profile = np.array([np.mean(group, axis=0) for i, group in np.ndenumerate(volume)]).reshape(???)
当前代码问题:首行计算年度小时数时未区分平年与闰年,导致平年的1417-1440小时对应3月1日,而闰年对应2月29日;若处理闰年逻辑过于复杂,可忽略该区分。
内容的提问来源于stack exchange,提问作者Dattel Klauber
相关产品推荐
相关产品推荐

