I have a file which is monthly data for one year (12 points). The data starts in December and ends in November. I'm hoping to create a 3-month running mean file which would be DJF, JFM, ..., SON (10 points)

I noticed there is a DataArray.rolling function which returns a rolling window option and I think would be useful for this. However, I haven't found any examples using the rolling function. I admit i'm not familiar with bottleneck, pandas.rolling_mean or the more recent pandas.rolling so my entry level is fairly low.

Here's some code to test:

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: exactly one dim/window should be provided

1 Answer

You are very close. The rolling method takes a key/value pair that maps as dim/window_size. This should work for you.

da.rolling(time=3).mean() 
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.