gpt4 book ai didi

reshape 多维数组

转载 作者:行者123 更新时间:2023-12-04 23:26:04 27 4
gpt4 key购买 nike

我有一个表示每小时温度数据的数组,并且想要计算每日最大值(或最小值,或平均值)。我可以使用 for 循环来做到这一点,但我相信在 R 中一定有很多更好的方法来做到这一点。

require(ncdf4)
nc <- nc_open('file.nc')
t2 <- ncvar_get(nc,var='T2') # [ncols, nrows, nsteps]

现在 t2 是一个包含 744 小时时间步长的数组,每个月有 31 天。我想要的是:
t2.max[ncols, nrows, 31]

或者,更一般地说,我想将 t2 reshape 为:
t2.reshape[ncols, nrows, ndays, 24]

从那里我可以使用 apply 来计算每日平均值或最大值或其他任何东西。

我希望结果是一个数组,而不是一个数据框。

建议?我尝试使用 reshape 包中的熔化/类型转换,但无法理解如何指定所需的公式。

最佳答案

如果 t2 是一个包含 31 天月份的 744 小时时间步长的数组”,那么它有 744 行和其他维度?(你没有告诉我们 ncol 是 744 还是 nrow 是 744。我们假设它是 nrow)

 array( tc, , dim =c( 31, 24, nrows,  ncols) )

另一方面,如果它是 [nrow,ncols,744],您可以使用 aperm 将其重新转换为上述行:
 array( aperm(tc, c(3,1,2)) , dim =c( 31, 24, nrows,  ncols) )

有一个包有一个“rowMax”和一个“rowMin”函数,它会给你一个你不需要发明的矢量化方法。 (它位于 Bioconductor 存储库的 Biobase 包中。)

关于 reshape 多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12786584/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com