numpy 3D数组中每n个切片的平均值- python

qv7cva1a  于 2023-10-19  发布在  Python
关注(0)|答案(2)|浏览(100)

我有一个3d数组,它表示一个月30天内每小时的数据。它的形状是720x13x85(30天有720个小时)。我想取每24小时的平均值,或者24个切片,这样我就有了每天的数据。这似乎是一个简单的问题,但我还没有找到一个方法,或任何答案,这个确切的问题在其他地方的论坛。我找到this related question没有答案。
也就是说,我想得到以下结果,并计算每天的平均值

Day1precip = precip[0:24,:,:]

以此类推一个月。理想情况下,我希望结果是一个3d数组,这样newarray[0,:,:]就是day1,依此类推。

trnvg8h3

trnvg8h31#

添加一个新的维度,然后取其平均值:

precip.reshape(-1, 24, *precip.shape[1:]).mean(1)

对于reshape,后面的维度总是更连续。这意味着将第一个维度拆分为30, 24可以得到30个块,每个块有24个元素,而不是相反。

gijlo24d

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)
这就是疯狂物理学家所说的,但我发现这样更容易理解。

相关问题