xarray.DataArray.sel (original) (raw)

DataArray.sel(indexers=None, method=None, tolerance=None, drop=False, **indexers_kwargs)[source]#

Return a new DataArray whose data is given by selecting index labels along the specified dimension(s).

In contrast to DataArray.isel, indexers for this method should use labels instead of integers.

Under the hood, this method is powered by using pandas’s powerful Index objects. This makes label based indexing essentially just as fast as using integer indexing.

It also means this method uses pandas’s (well documented) logic for indexing. This means you can use string shortcuts for datetime indexes (e.g., ‘2000-01’ to select all values in January 2000). It also means that slices are treated as inclusive of both the start and stop values, unlike normal Python indexing.

Warning

Do not try to assign values when using any of the indexing methodsisel or sel:

da = xr.DataArray([0, 1, 2, 3], dims=["x"])

DO NOT do this

da.isel(x=[0, 1, 2])[1] = -1

Assigning values with the chained indexing using .sel or.isel fails silently.

Parameters:

Returns:

obj (DataArray) – A new DataArray with the same contents as this DataArray, except the data and each dimension is indexed by the appropriate indexers. If indexer DataArrays have coordinates that do not conflict with this object, then these coordinates will be attached. In general, each array’s data will be a view of the array’s data in this DataArray, unless vectorized indexing was triggered by using an array indexer, in which case the data will be a copy.

Examples

da = xr.DataArray( ... np.arange(25).reshape(5, 5), ... coords={"x": np.arange(5), "y": np.arange(5)}, ... dims=("x", "y"), ... ) da <xarray.DataArray (x: 5, y: 5)> Size: 200B array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24]]) Coordinates:

tgt_x = xr.DataArray(np.linspace(0, 4, num=5), dims="points") tgt_y = xr.DataArray(np.linspace(0, 4, num=5), dims="points") da = da.sel(x=tgt_x, y=tgt_y, method="nearest") da <xarray.DataArray (points: 5)> Size: 40B array([ 0, 6, 12, 18, 24]) Coordinates: x (points) int64 40B 0 1 2 3 4 y (points) int64 40B 0 1 2 3 4 Dimensions without coordinates: points