xarray.core.resample.DatasetResample.std#
- DatasetResample.std(dim=None, *, skipna=None, ddof=0, keep_attrs=None, **kwargs)[source]#
Reduce this Dataset’s data by applying
std
along some dimension(s).- Parameters:
dim (
str
,Iterable
ofHashable
,"..."
orNone
, default:None
) – Name of dimension[s] along which to applystd
. For e.g.dim="x"
ordim=["x", "y"]
. If None, will reduce over the Resample dimensions. If “…”, will reduce over all dimensions.skipna (
bool
orNone
, 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) orskipna=True
has not been implemented (object, datetime64 or timedelta64).ddof (
int
, default:0
) – “Delta Degrees of Freedom”: the divisor used in the calculation isN - ddof
, whereN
represents the number of elements.keep_attrs (
bool
orNone
, 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 calculatingstd
on this object’s data. These could include dask-specific kwargs likesplit_every
.
- Returns:
reduced (
Dataset
) – New Dataset withstd
applied to its data and the indicated dimension(s) removed
See also
numpy.std
,dask.array.std
,Dataset.std
- Resampling and grouped operations
User guide on resampling operations.
Notes
Use the
flox
package to significantly speed up resampling computations, especially with dask arrays. Xarray will use flox by default if installed. Pass flox-specific keyword arguments in**kwargs
. The default choice ismethod="cohorts"
which generalizes the best,method="blockwise"
might work better for your problem. See the flox documentation for more.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("2001-01-01", freq="M", periods=6)), ... labels=("time", np.array(["a", "b", "c", "c", "b", "a"])), ... ), ... ) >>> ds = xr.Dataset(dict(da=da)) >>> ds <xarray.Dataset> Dimensions: (time: 6) Coordinates: * time (time) datetime64[ns] 2001-01-31 2001-02-28 ... 2001-06-30 labels (time) <U1 'a' 'b' 'c' 'c' 'b' 'a' Data variables: da (time) float64 1.0 2.0 3.0 1.0 2.0 nan
>>> ds.resample(time="3M").std() <xarray.Dataset> Dimensions: (time: 3) Coordinates: * time (time) datetime64[ns] 2001-01-31 2001-04-30 2001-07-31 Data variables: da (time) float64 0.0 0.8165 0.0
Use
skipna
to control whether NaNs are ignored.>>> ds.resample(time="3M").std(skipna=False) <xarray.Dataset> Dimensions: (time: 3) Coordinates: * time (time) datetime64[ns] 2001-01-31 2001-04-30 2001-07-31 Data variables: da (time) float64 0.0 0.8165 nan
Specify
ddof=1
for an unbiased estimate.>>> ds.resample(time="3M").std(skipna=True, ddof=1) <xarray.Dataset> Dimensions: (time: 3) Coordinates: * time (time) datetime64[ns] 2001-01-31 2001-04-30 2001-07-31 Data variables: da (time) float64 nan 1.0 nan