1

编辑 2016-01-24:此行为来自 xarray 中的错误(当时称为“xray”)。请参阅下面 skc 的回答

我有一个xarray.DataArray跨越多年的每日数据。我想计算时间序列中每个月的数据的时间趋势。我可以得到分子,即每个月的数量变化,使用resample. 假设arr是我的xarray.DataArray对象,时间坐标名为'time'

data_first = arr.resample('1M', 'time' how='first')
data_last = arr.resample('1M', 'time' how='last')

然后data_last - data_first给我那个月该变量的变化。

但是,这不适用于time=arr.time对象本身:'first''last'kwarg 值产生相同的值,即该月的最后一天。另外,我不能使用这些groupby方法,因为time.month当我想要时间序列中每个单独月份内的第一个和最后一个时间值时,将所有 1 月组合在一起,将所有 2 月组合在一起等等。

有没有一种简单的方法可以在 xarray 中做到这一点?我怀疑是的,但我是这个包裹的新手,而且失败得很惨。

4

1 回答 1

2

由于'time'是您提供的 DataArray 中的坐标,因此目前不可能直接在其上重新采样1 个预制件。一种可能的解决方法是使用时间坐标值作为变量创建一个新的 DataArray(仍然与相同的坐标链接'time'

如果arr是你开始的 DataArray,我会建议这样的事情:

time = xray.DataArray(arr.time.values, coords=[arr.time.values], dims=['time'])
time_first = time.resample('1M', 'time', how='first')
time_last = time.resample('1M', 'time', how='last')
time_diff = time_last - time_first

1这不是预期的行为——请参阅上面斯蒂芬的评论。

更新: 拉取请求 648已修复此问题,因此不再需要使用解决方法。

于 2015-10-15T22:56:52.260 回答