xarray:从每月重采样平均值(不是气候学)计算每日异常

时间:2018-04-01 16:28:05

标签: python python-xarray xarray

xarray的documentation解释了如何计算每月气候学的异常情况。在这里,我尝试做一些稍微不同的事情:从每日时间序列开始,我想计算每月异常到本月的平均值(不是每月的气候学)。

我设法使用groupby和manualy创建的月邮票(下面的代码)。是否有更好,更少hacky的方式来获得相同的结果?

import xarray as xr
import numpy as np
import pandas as pd

# Create a data array
t = pd.date_range('2001', '2003', freq='D')
da = xr.DataArray(np.arange(len(t)), coords={'time':t}, dims='time')

# Monthly time stamp for groupby
da.coords['stamp'] = ('time', [str(y) + '-' + str(m) for (y, m) in 
                               zip(da['time.year'].values, 
                                   da['time.month'].values)])

# Anomaly
da_ano = da.groupby('stamp') - da.groupby('stamp').mean()

da_ano.plot();

plot output

1 个答案:

答案 0 :(得分:2)

您可以在每日时间序列中明确resample每月时间序列。例如:

monthly = da.resample(time='1MS').mean()
upsampled_monthly = monthly.resample(time='1D').ffill()
anomalies = da - upsampled_monthly