Aggregation

Xarray supports many of the aggregations methods that numpy has. A partial list includes: all, any, argmax, argmin, max, mean, median, min, prod, sum, std, var.

Whereas the numpy syntax would require scalar axes, xarray can use dimension names:

import xarray as xr
ds = xr.open_dataset("../data/air_temperature.nc")
da = ds['air']
da
<xarray.DataArray 'air' (time: 2920, lat: 25, lon: 53)>
[3869000 values with dtype=float32]
Coordinates:
  * lat      (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0
  * lon      (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0
  * time     (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00
Attributes:
    long_name:     4xDaily Air temperature at sigma level 995
    units:         degK
    precision:     2
    GRIB_id:       11
    GRIB_name:     TMP
    var_desc:      Air temperature
    dataset:       NMC Reanalysis
    level_desc:    Surface
    statistic:     Individual Obs
    parent_stat:   Other
    actual_range:  [185.16 322.1 ]
da.mean()
<xarray.DataArray 'air' ()>
array(281.25513, dtype=float32)
da.mean(dim=['lat', 'lon'])
<xarray.DataArray 'air' (time: 2920)>
array([274.16626, 273.5202 , 273.23352, ..., 272.99994, 273.0445 , 273.41498],
      dtype=float32)
Coordinates:
  * time     (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00
da.median(dim='time')
<xarray.DataArray 'air' (lat: 25, lon: 53)>
array([[261.29   , 261.15   , 260.9    , ..., 249.29999, 250.29999, 251.69499],
       [266.1    , 266.14502, 265.9    , ..., 248.39   , 250.29   , 253.29999],
       [267.19998, 266.345  , 266.1    , ..., 249.29999, 252.39   , 257.1    ],
       ...,
       [297.79   , 297.1    , 296.69998, ..., 296.9    , 296.29   , 295.79   ],
       [298.19998, 298.     , 297.5    , ..., 296.9    , 296.79   , 296.4    ],
       [298.4    , 298.4    , 298.19   , ..., 297.29   , 297.29   , 297.29   ]],
      dtype=float32)
Coordinates:
  * lat      (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0
  * lon      (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0
da.std(dim='time')
<xarray.DataArray 'air' (lat: 25, lon: 53)>
array([[11.747092, 11.693981, 11.698499, ..., 10.668427, 10.772092, 10.894412],
       [11.657324, 11.69504 , 11.78264 , ..., 10.910913, 11.066578, 11.024166],
       [12.434489, 12.759332, 13.078072, ..., 11.306724, 10.977766, 10.328547],
       ...,
       [ 1.606873,  1.555383,  1.466195, ...,  1.777959,  1.862361,  1.949547],
       [ 1.30469 ,  1.26994 ,  1.253034, ...,  1.760575,  1.911518,  2.038532],
       [ 1.036176,  1.04871 ,  1.03761 , ...,  1.753763,  1.84843 ,  1.925401]],
      dtype=float32)
Coordinates:
  * lat      (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0
  * lon      (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0
%load_ext watermark
%watermark --iversion -g -m -v -u -d
xarray 0.12.1
last updated: 2019-05-17 

CPython 3.6.7
IPython 7.5.0

compiler   : GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)
system     : Darwin
release    : 18.2.0
machine    : x86_64
processor  : i386
CPU cores  : 8
interpreter: 64bit
Git hash   : 83530e805423a8f36958a61783cbbd9fe388eace