In [1]:
import xarray as xr
from ahh import exp, sci, ext, era

In [2]:
ds = exp.arr_ds() # import experimental dataset; NCEP tmp 1948

In [3]:
lats = ds['lat'].values
lons = ds['lon'].values
time = ds['time'].values
air = ds['air'].values
da = xr.DataArray(air, coords={'time': time, 'lat': lats, 'lon': lons},
                  dims=('time', 'lat', 'lon')) # create a data array
da.attrs = ds.attrs # copy over attributes (although a bit different)
dv = da.variable # leave out coordinate data

da_2 = ds['air'] # also can do this, but assuming you don't start out with a xr.dataset

In [4]:
ds_t2 = exp.arr_ds(timestep=2) # import another ds; NCEP tmp 1949
ds_list = [ds, ds_t2] # insert the datasets to concatenate across time axis
ds_comb = xr.concat(ds_list, 'time') # combined dataset
ds.time[0].values # first time step
ds_t2.time[-1].values # last time step
ds_comb.time[0].values, ds_comb.time[-1].values # contains both time steps


Out[4]:
numpy.datetime64('1948-01-01T00:00:00.000000000')
Out[4]:
numpy.datetime64('1949-12-31T00:00:00.000000000')
Out[4]:
(numpy.datetime64('1948-01-01T00:00:00.000000000'),
 numpy.datetime64('1949-12-31T00:00:00.000000000'))

In [5]:
ds_v2 = exp.arr_ds(var='rh') # import another ds; NCEP rh 1948
da = ds.air # get data array out
da2 = ds_v2.rhum # get data array out
ds_comb_v = xr.Dataset({'t2m': da, 'rh': da2}) # merge two different variables with same dimensions into one dataset
ds_comb_v


Out[5]:
<xarray.Dataset>
Dimensions:  (lat: 73, lon: 144, time: 366)
Coordinates:
  * lat      (lat) float32 90.0 87.5 85.0 82.5 80.0 77.5 75.0 72.5 70.0 67.5 ...
  * lon      (lon) float32 0.0 2.5 5.0 7.5 10.0 12.5 15.0 17.5 20.0 22.5 ...
  * time     (time) datetime64[ns] 1948-01-01 1948-01-02 1948-01-03 ...
Data variables:
    t2m      (time, lat, lon) float64 238.1 238.1 238.1 238.1 238.1 238.1 ...
    rh       (time, lat, lon) float64 89.25 89.25 89.25 89.25 89.25 89.25 ...

In [32]:
ds = exp.arr_ds() # import experimental dataset; NCEP tmp 1948
ds_mth = ds.groupby('time.month').mean()
da_seas = era.mth2terc(ds_mth['month'].values) # get seasonal values
ds_seas = ds_mth.copy() # copy over dataset to prevent contamination
ds_seas['month'] = da_seas
ds_seas.assign(terc_air=(('month'), sci.get_terc_avg(ds_seas.air.values)))


Out[32]:
<xarray.Dataset>
Dimensions:   (month: 12)
Coordinates:
  * month     (month) <U3 'NDJ' 'DJF' 'JFM' 'FMA' 'MAM' 'AMJ' 'MJJ' 'JJA' ...
Data variables:
    air       (month) float64 276.5 275.3 274.7 275.7 277.9 279.1 279.2 ...
    terc_air  (month) float64 nan nan 275.5 275.2 276.1 277.6 278.7 279.2 ...

In [ ]:


In [ ]:


In [ ]: