xrspatial.classify.quantile#
- xrspatial.classify.quantile(agg: xarray.core.dataarray.DataArray, k: int = 4, name: Optional[str] = 'quantile') xarray.core.dataarray.DataArray[source]#
Reclassifies data for array agg into new values based on quantile groups of equal size.
- Parameters
agg (xarray.DataArray) – 2D NumPy, CuPy, NumPy-backed Dask, or Cupy-backed Dask array of values to be reclassified.
k (int, default=4) – Number of quantiles to be produced.
name (str, default='quantile') – Name of the output aggregate array.
- Returns
quantile_agg – 2D aggregate array, of quantile allocations. All other input attributes are preserved.
- Return type
xarray.DataArray, of the same type as agg
Notes
Dask’s percentile algorithm is approximate, while numpy’s is exact.
This may cause some differences between results of vanilla numpy
and dask version of the input agg. (dask/dask#3099) # noqa
References
Examples
Quantile work with numpy backed xarray DataArray .. sourcecode:: python
>>> import numpy as np >>> import xarray as xr >>> from xrspatial.classify import quantile
>>> elevation = np.array([ [np.nan, 1., 2., 3., 4.], [ 5., 6., 7., 8., 9.], [10., 11., 12., 13., 14.], [15., 16., 17., 18., 19.], [20., 21., 22., 23., np.inf] ]) >>> agg_numpy = xr.DataArray(elevation, attrs={'res': (10.0, 10.0)}) >>> numpy_quantile = quantile(agg_numpy, k=5) >>> print(numpy_quantile) <xarray.DataArray 'quantile' (dim_0: 5, dim_1: 5)> array([[nan, 0., 0., 0., 0.], [ 0., 1., 1., 1., 1.], [ 2., 2., 2., 2., 2.], [ 3., 3., 3., 3., 4.], [ 4., 4., 4., 4., nan]], dtype=float32) Dimensions without coordinates: dim_0, dim_1 Attributes: res: (10.0, 10.0)