为啥 xarray 重新采样均值计算会产生额外的时间?

Posted

技术标签:

【中文标题】为啥 xarray 重新采样均值计算会产生额外的时间?【英文标题】:why does xarray resample mean calculation create an extra time?为什么 xarray 重新采样均值计算会产生额外的时间? 【发布时间】:2021-11-23 09:21:44 【问题描述】:

我正在使用 xarray 加载年度数据集。我想创建 35 年的数据平均值(不是滚动平均值,只是分成 35 年的平均值)。 现在我执行以下操作:

filename = '/glade/scratch/mberdahl/127kaH11/MOC/MOC_only_127kaH11_AnnMeans.nc' # read 127ka H11 run, 1-1749 years only
ds = xr.open_dataset(filename)
ds

哪个显示

Dimensions:
d2: 2lat_aux_grid: 395 moc_comp: 3 moc_z: 61 time: 1750 transport_reg: 2

每年有 1750 个时间条目,我应该可以计算出 50 个均值,每个均值占 35 年时间。但是,当我执行以下操作时:

MOC_35yr = ds.resample(time="35A").mean()
MOC_35yr

我得到了 51 次:

Dimensions:
lat_aux_grid: 395 moc_z: 61 time: 51 

作为完整性检查,我还使用 nco 命令计算了 35 年的平均值,结果与 xarray.resample.mean 方法相同,仅第 0 次输入。之后结果就不同了。

谁能看出我做错了什么?

谢谢, 米拉

【问题讨论】:

实际上,我发现也许我还必须为 'start' 指定 S。所以: MOC_35yr = ds.resample(time="35AS").mean() 这似乎工作得很好,但我不知道我是否完全理解为什么。 我认为这只是为了避免默认的“start_day”:原点是时间序列午夜的第一天。希望这对其他人有帮助! 如果这是答案,请随意回答您自己的问题! 【参考方案1】:

我相信答案是我必须将 S 指定为“开始”。所以:MOC_35yr = ds.resample(time="35AS").mean().

同样在这篇文章中:xarray and 5 year averages from monthly or yearly avarges

这只是为了避免默认的“start_day”:原点是时间序列午夜的第一天。

希望这对其他人有所帮助。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于为啥 xarray 重新采样均值计算会产生额外的时间?的主要内容,如果未能解决你的问题,请参考以下文章

使用 xarray 重新采样非标准 CFTimeIndex 日历(360 天,无闰年)以供 pandas 使用的方法

滚动均值持续到明年 (xarray)

根据每年的每日数据计算月平均值

pandas 重新采样以获得具有时间序列数据的月平均值

Pandas 将 5 分钟数据重新采样为每小时平均值:日期问题 [重复]

Pandas TimeSeries 重新采样产生 NaN