2017-09-01 209 views
0

我有一个文件,它是一年的每月数据(12分)。数据从12月开始,到11月结束。我希望创建一个3个月的平均文件,这将是DJF,JFM,...,SON(10分)python-xarray:滚动平均值示例

我注意到有一个DataArray.rolling函数返回一个滚动窗口选项,我想会对此有用。但是,我还没有找到任何使用滚动功能的例子。我承认我不熟悉bottleneck,pandas.rolling_mean或更近的pandas.rolling,所以我的入门级别相当低。

下面是一些代码来测试:

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

lat = np.linspace(-90, 90, num=181); lon = np.linspace(0, 359, num=360) 
# Define monthly average time as day in middle of month 
time = pd.date_range('15/12/1999', periods=12, freq=pd.DateOffset(months=1)) 
# Create data as 0:11 at each grid point 
a = np.linspace(0,11,num=12) 
# expand to 2D 
a2d = np.repeat(tmp[:, np.newaxis], len(lat), axis=1) 
# expand to 3D 
a3d = np.repeat(a2d[:, :, np.newaxis], len(lon), axis=2) 
# I'm sure there was a cleaner way to do that... 

da = xr.DataArray(a3d, coords=[time, lat, lon], dims=['time','lat','lon']) 

# Having a stab at the 3-month rolling mean 
da.rolling(dim='time',window=3).mean() 
# Error output: 
Traceback (most recent call last): 
File "<ipython-input-132-9d64cc09c263>", line 1, in <module> 
da.rolling(dim='time',window=3).mean() 
File "/Users/Ray/anaconda/lib/python3.6/site-packages/xarray/core/common.py", line 478, in rolling 
center=center, **windows) 
File "/Users/Ray/anaconda/lib/python3.6/site-packages/xarray/core/rolling.py", line 126, in __init__ 
center=center, **windows) 
File "/Users/Ray/anaconda/lib/python3.6/site-packages/xarray/core/rolling.py", line 62, in __init__ 
raise ValueError('exactly one dim/window should be provided') 

ValueError异常:只有一个朦胧/窗应提供

回答

0

你非常接近。 rolling method需要一个映射为dim/window_size的键/值对。这应该适合你。

da.rolling(time=3).mean() 
+0

谢谢。我认为最简单的方法是删除nans,只需要 da.rolling(time = winlen).mean()[winlen-1 ::,:,] 不确定是否有更好的东西。 请记住,如果我做一个小小的PR,将此示例添加到DOC的https://github.com/pydata/xarray/blob/master/xarray/core/rolling.py 是否有可用功能的列表滚动对象,例如平均数,总和,中位数等? –

+1

所以你可以做两件事来帮助nans:1)你可以设置'min_periods'为一个整数(例如'da.rolling(min_periods = 0,time = 3).mean()'),或者2)你可以使用'dropna'(例如da.rolling(time = 3).mean()。dropna('time)')来删除NaNs。我们一直致力于帮助改善xarray文档。 – jhamman