为啥 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 使用的方法