xarray.core.resample.DataArrayResample.std#

DataArrayResample.std(dim=None, *, skipna=None, ddof=0, keep_attrs=None, **kwargs)[source]#

Reduce this DataArray’s data by applying std along some dimension(s).

Parameters
  • dim (str, Iterable of Hashable, "..." or None, default: None) – Name of dimension[s] along which to apply std. For e.g. dim="x" or dim=["x", "y"]. If None, will reduce over the Resample dimensions. If “…”, will reduce over all dimensions.

  • skipna (bool or None, optional) – If True, skip missing values (as marked by NaN). By default, only skips missing values for float dtypes; other dtypes either do not have a sentinel missing value (int) or skipna=True has not been implemented (object, datetime64 or timedelta64).

  • ddof (int, default: 0) – “Delta Degrees of Freedom”: the divisor used in the calculation is N - ddof, where N represents the number of elements.

  • keep_attrs (bool or None, optional) – If True, attrs will be copied from the original object to the new one. If False, the new object will be returned without attributes.

  • **kwargs (Any) – Additional keyword arguments passed on to the appropriate array function for calculating std on this object’s data. These could include dask-specific kwargs like split_every.

Returns

reduced (DataArray) – New DataArray with std applied to its data and the indicated dimension(s) removed

See also

numpy.std, dask.array.std, DataArray.std

Resampling and grouped operations

User guide on resampling operations.

Notes

Non-numeric variables will be removed prior to reducing.

Examples

>>> da = xr.DataArray(
...     np.array([1, 2, 3, 1, 2, np.nan]),
...     dims="time",
...     coords=dict(
...         time=("time", pd.date_range("01-01-2001", freq="M", periods=6)),
...         labels=("time", np.array(["a", "b", "c", "c", "b", "a"])),
...     ),
... )
>>> da
<xarray.DataArray (time: 6)>
array([ 1.,  2.,  3.,  1.,  2., nan])
Coordinates:
  * time     (time) datetime64[ns] 2001-01-31 2001-02-28 ... 2001-06-30
    labels   (time) <U1 'a' 'b' 'c' 'c' 'b' 'a'
>>> da.resample(time="3M").std()
<xarray.DataArray (time: 3)>
array([0.        , 0.81649658, 0.        ])
Coordinates:
  * time     (time) datetime64[ns] 2001-01-31 2001-04-30 2001-07-31

Use skipna to control whether NaNs are ignored.

>>> da.resample(time="3M").std(skipna=False)
<xarray.DataArray (time: 3)>
array([0.        , 0.81649658,        nan])
Coordinates:
  * time     (time) datetime64[ns] 2001-01-31 2001-04-30 2001-07-31

Specify ddof=1 for an unbiased estimate.

>>> da.resample(time="3M").std(skipna=True, ddof=1)
<xarray.DataArray (time: 3)>
array([nan,  1., nan])
Coordinates:
  * time     (time) datetime64[ns] 2001-01-31 2001-04-30 2001-07-31