我有一个3d数组,它表示一个月30天内每小时的数据。它的形状是720x13x85(30天有720个小时)。我想取每24小时的平均值,或者24个切片,这样我就有了每天的数据。这似乎是一个简单的问题,但我还没有找到一个方法,或任何答案,这个确切的问题在其他地方的论坛。我找到this related question没有答案。
也就是说,我想得到以下结果,并计算每天的平均值
Day1precip = precip[0:24,:,:]
以此类推一个月。理想情况下,我希望结果是一个3d数组,这样newarray[0,:,:]就是day1,依此类推。
2条答案
按热度按时间trnvg8h31#
添加一个新的维度,然后取其平均值:
对于
reshape
,后面的维度总是更连续。这意味着将第一个维度拆分为30, 24
可以得到30个块,每个块有24个元素,而不是相反。gijlo24d2#
这里有一个简单的方法来思考你要做什么。
而不是720小时,你希望有30天的数据。要做到这一点,你必须平均每一组连续24小时。每24小时平均为1天。
因此,你可以把你的720小时分成30组,每组24小时。(
720 = 30 x 24
)你的形状从
(720, 13, 85)
到(30, 24, 13, 85)
。换句话说,现在你有30天,每一天有24小时,每一小时都有维度为(13, 85)
的数据。现在,当您对每组内的24小时进行平均时,您将获得一个形状为(30, 13, 85)
的数据集,这就是您要查找的数据集。在代码中,它看起来像:
result = precip.reshape(30, 24, 13, 85).mean(1)
这就是疯狂物理学家所说的,但我发现这样更容易理解。