# Indexes

#### SEE ALSO
See the Xarray gallery on [custom indexes](https://xarray-indexes.readthedocs.io/) for more examples.

## Creating indexes

| [`cftime_range`](../generated/xarray.cftime_range.html.md#xarray.cftime_range)([start, end, periods, freq, ...])                 | Return a fixed frequency CFTimeIndex.                                                                         |
|-------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
| [`date_range`](../generated/xarray.date_range.html.md#xarray.date_range)([start, end, periods, freq, tz, ...])                 | Return a fixed frequency datetime index.                                                                      |
| [`date_range_like`](../generated/xarray.date_range_like.html.md#xarray.date_range_like)(source, calendar[, use_cftime])             | Generate a datetime array with the same frequency, start and end as another one, but in a different calendar. |
| [`indexes.RangeIndex.arange`](../generated/xarray.indexes.RangeIndex.arange.html.md#xarray.indexes.RangeIndex.arange)([start, stop, ...])     | Create a new RangeIndex from given start, stop and step values.                                               |
| [`indexes.RangeIndex.linspace`](../generated/xarray.indexes.RangeIndex.linspace.html.md#xarray.indexes.RangeIndex.linspace)(start, stop[, ...]) | Create a new RangeIndex from given start / stop values and number of values.                                  |

## Built-in Indexes

Default, pandas-backed indexes built-in to Xarray:

| [`indexes.PandasIndex`](../generated/xarray.indexes.PandasIndex.html.md#xarray.indexes.PandasIndex)(array, dim[, ...])           | Wrap a pandas.Index as an xarray compatible index.      |
|------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------|
| [`indexes.PandasMultiIndex`](../generated/xarray.indexes.PandasMultiIndex.html.md#xarray.indexes.PandasMultiIndex)(array, dim[, ...]) | Wrap a pandas.MultiIndex as an xarray compatible index. |

More complex indexes built-in to Xarray:

| [`CFTimeIndex`](../generated/xarray.CFTimeIndex.html.md#xarray.CFTimeIndex)(data[, name])                                        | Custom Index for working with CF calendars and dates                                                                 |
|--------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|
| [`indexes.RangeIndex`](../generated/xarray.indexes.RangeIndex.html.md#xarray.indexes.RangeIndex)(transform)                             | Xarray index implementing a simple bounded 1-dimension interval with evenly spaced, monotonic floating-point values. |
| [`indexes.NDPointIndex`](../generated/xarray.indexes.NDPointIndex.html.md#xarray.indexes.NDPointIndex)(tree_obj, \*, ...)                 | Xarray index for irregular, n-dimensional data.                                                                      |
| [`indexes.CoordinateTransformIndex`](../generated/xarray.indexes.CoordinateTransformIndex.html.md#xarray.indexes.CoordinateTransformIndex)(transform) | Helper class for creating Xarray indexes based on coordinate transforms.                                             |

## Building custom indexes

These classes are building blocks for more complex Indexes:

| [`indexes.CoordinateTransform`](../generated/xarray.indexes.CoordinateTransform.html.md#xarray.indexes.CoordinateTransform)(coord_names, ...)    | Abstract coordinate transform with dimension & coordinate names.                                                                                                                                                                                                                                                                         |
|--------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [`indexes.CoordinateTransformIndex`](../generated/xarray.indexes.CoordinateTransformIndex.html.md#xarray.indexes.CoordinateTransformIndex)(transform) | Helper class for creating Xarray indexes based on coordinate transforms.                                                                                                                                                                                                                                                                 |
| [`indexes.NDPointIndex`](../generated/xarray.indexes.NDPointIndex.html.md#xarray.indexes.NDPointIndex)(tree_obj, \*, ...)                 | Xarray index for irregular, n-dimensional data.                                                                                                                                                                                                                                                                                          |
| [`indexes.TreeAdapter`](../generated/xarray.indexes.TreeAdapter.html.md#xarray.indexes.TreeAdapter)(points, \*, options)                 | Lightweight adapter abstract class for plugging in 3rd-party structures like [`scipy.spatial.KDTree`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.KDTree.html#scipy.spatial.KDTree) or `sklearn.neighbors.KDTree` into [`NDPointIndex`](../generated/xarray.indexes.NDPointIndex.html.md#xarray.indexes.NDPointIndex). |

The Index base class for building custom indexes:

| [`Index`](../generated/xarray.Index.html.md#xarray.Index)()                                                                    | Base class inherited by all xarray-compatible indexes.                                           |
|------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------|
| [`Index.from_variables`](../generated/xarray.Index.from_variables.html.md#xarray.Index.from_variables)(variables, \*, options)                | Create a new index object from one or more coordinate variables.                                 |
| [`Index.concat`](../generated/xarray.Index.concat.html.md#xarray.Index.concat)(indexes, dim[, positions])                             | Create a new index by concatenating one or more indexes of the same type.                        |
| [`Index.stack`](../generated/xarray.Index.stack.html.md#xarray.Index.stack)(variables, dim)                                          | Create a new index by stacking coordinate variables into a single new dimension.                 |
| [`Index.unstack`](../generated/xarray.Index.unstack.html.md#xarray.Index.unstack)()                                                    | Unstack a (multi-)index into multiple (single) indexes.                                          |
| [`Index.create_variables`](../generated/xarray.Index.create_variables.html.md#xarray.Index.create_variables)([variables])                       | Maybe create new coordinate variables from this index.                                           |
| [`Index.should_add_coord_to_array`](../generated/xarray.Index.should_add_coord_to_array.html.md#xarray.Index.should_add_coord_to_array)(name, var, dims) | Define whether or not an index coordinate variable should be added to a new DataArray.           |
| [`Index.to_pandas_index`](../generated/xarray.Index.to_pandas_index.html.md#xarray.Index.to_pandas_index)()                                    | Cast this xarray index to a pandas.Index object or raise a `TypeError` if this is not supported. |
| [`Index.isel`](../generated/xarray.Index.isel.html.md#xarray.Index.isel)(indexers)                                                  | Maybe returns a new index from the current index itself indexed by positional indexers.          |
| [`Index.sel`](../generated/xarray.Index.sel.html.md#xarray.Index.sel)(labels)                                                      | Query the index with arbitrary coordinate label indexers.                                        |
| [`Index.join`](../generated/xarray.Index.join.html.md#xarray.Index.join)(other[, how])                                              | Return a new index from the combination of this index with another index of the same type.       |
| [`Index.reindex_like`](../generated/xarray.Index.reindex_like.html.md#xarray.Index.reindex_like)(other)                                     | Query the index with another index of the same type.                                             |
| [`Index.equals`](../generated/xarray.Index.equals.html.md#xarray.Index.equals)(other, \*\*kwargs)                                     | Compare this index with another index of the same type.                                          |
| [`Index.roll`](../generated/xarray.Index.roll.html.md#xarray.Index.roll)(shifts)                                                    | Roll this index by an offset along one or more dimensions.                                       |
| [`Index.rename`](../generated/xarray.Index.rename.html.md#xarray.Index.rename)(name_dict, dims_dict)                                  | Maybe update the index with new coordinate and dimension names.                                  |
| [`Index.copy`](../generated/xarray.Index.copy.html.md#xarray.Index.copy)([deep])                                                    | Return a (deep) copy of this index.                                                              |

The following are useful when building custom Indexes

| [`IndexSelResult`](../generated/xarray.IndexSelResult.html.md#xarray.IndexSelResult)(dim_indexers[, indexes, ...])   | Index query results.   |
|-----------------------------------------------------------------------------------------------------------------------|------------------------|
