html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue https://github.com/pydata/xarray/issues/2028#issuecomment-1423154722,https://api.github.com/repos/pydata/xarray/issues/2028,1423154722,IC_kwDOAMm_X85U054i,13985417,2023-02-08T19:47:22Z,2023-02-08T19:47:22Z,NONE,"Thanks, @benbovy. Yep, the kdtree objects don't like the range based slices. xoak has worked well in the past though. I'll keep an eye on xoak-xarray integration.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-1422518769,https://api.github.com/repos/pydata/xarray/issues/2028,1422518769,IC_kwDOAMm_X85Uyenx,4160723,2023-02-08T12:29:27Z,2023-02-08T12:41:00Z,MEMBER,"@gewitterblitz there is a kdtree-based index example in #7041 that works with multi-dimensional coordinates. You could also have a look at https://xoak.readthedocs.io/en/latest/ (it doesn't use Xarray indexes - soon hopefully - so the current API is via Xarray accessors). EDIT: seeing your previous https://github.com/pydata/xarray/issues/2028#issuecomment-921926536, not sure how you could use slices for label selection using those indexes as I don't think the wrapped scipy / sklearn kdtree objects support range queries. Other spatial indexes may support it (e.g., there's an example in https://github.com/martinfleis/xvec of selecting points using a `shapely.box`, although currently it only supports 1-d geometry coordinates).","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-1422003293,https://api.github.com/repos/pydata/xarray/issues/2028,1422003293,IC_kwDOAMm_X85Uwgxd,13985417,2023-02-08T04:52:23Z,2023-02-08T04:52:23Z,NONE,"Thanks @benbovy, it works well. I am curious about using set_xindex with 2-dimensional non-index coordinates. A use case could be datasets with `x` and `y` coordinates that need to be subset using `longitude (x,y)` and `latitude (x,y)` values. Any suggestions?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-1421222703,https://api.github.com/repos/pydata/xarray/issues/2028,1421222703,IC_kwDOAMm_X85UtiMv,4160723,2023-02-07T18:01:39Z,2023-02-07T18:01:39Z,MEMBER,"@aberges-grd If your non-index coordinate supports it (I guess it does?), you could assign a default index to the coordinate with `set_xindex` and then use slices for selection like any other (dimension) coordinate backed by a pandas index.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-1421060924,https://api.github.com/repos/pydata/xarray/issues/2028,1421060924,IC_kwDOAMm_X85Us6s8,103256364,2023-02-07T16:28:53Z,2023-02-07T16:28:53Z,NONE,"What about slices? My non-index coord is a datetime, and I need to select between two dates.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-1265252754,https://api.github.com/repos/pydata/xarray/issues/2028,1265252754,IC_kwDOAMm_X85LajmS,4160723,2022-10-03T10:38:57Z,2022-10-03T16:45:35Z,MEMBER,"With the last release v2022.09.0, this is now possible via `.set_xindex()`: ```python a = a.set_xindex(""currency"") a.sel(currency=""EUR"") # # array([20, 30]) # Coordinates: # * country (country) I agree this is harder that it should be. > > Here's one way: > > ```python > In [28]: a.where(a.currency=='EUR', drop=True) > Out[28]: > > array([20., 30.]) > Coordinates: > * country (country) currency (country) ``` > > I'm not sure whether `.sel` should work for non-`IndexVariables` - thoughts? @max-sixty , perhaps there is any update on OPs question or maybe you can help to achieve the following? I would like `sel based on a non-dim coordinate` to be as fast as `sel based on the dim itself`. Timings: ```python # sel based on a non-dim coordinate # (using this coordinate directly .sel(product_id=26) would result in error ""'no index found for coordinate product_id"") %timeit xds.sel(product=xds.product_id==26) 1.54 ms ± 64.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) # sel based on the dim itself %timeit xds.sel(product='GN91 Glove Medium') 499 µs ± 16.1 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) %timeit xds.where(xds.product_id==26, drop=True) 4.17 ms ± 39 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) ``` Anyways, _xarray_ is brilliant and made my week :)","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-923098243,https://api.github.com/repos/pydata/xarray/issues/2028,923098243,IC_kwDOAMm_X843BVyD,2448579,2021-09-20T16:46:28Z,2021-09-20T16:46:28Z,MEMBER,"xoak should work here: https://xoak.readthedocs.io/en/latest/ Here's an example with ocean model output: https://pop-tools.readthedocs.io/en/latest/examples/xoak-example.html . If you can wait a while, this will all work better once #5692 is merged.","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-921926536,https://api.github.com/repos/pydata/xarray/issues/2028,921926536,IC_kwDOAMm_X84283uI,13985417,2021-09-17T16:27:14Z,2021-09-17T16:31:55Z,NONE,"@dcherian any recoomendations for 2D non-dim coords? I would like to subset a dataarray based on slices for `x` and `y` coordinates ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-614031935,https://api.github.com/repos/pydata/xarray/issues/2028,614031935,MDEyOklzc3VlQ29tbWVudDYxNDAzMTkzNQ==,2448579,2020-04-15T13:12:50Z,2020-04-15T13:12:50Z,MEMBER,#3925 would fix this for 1D non-dim coords. We should update the docs (ping @TomNicholas),"{""total_count"": 4, ""+1"": 4, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-613802224,https://api.github.com/repos/pydata/xarray/issues/2028,613802224,MDEyOklzc3VlQ29tbWVudDYxMzgwMjIyNA==,18236610,2020-04-15T03:58:35Z,2020-04-15T03:58:52Z,NONE,"I am a little confused about the documentation relating to this issue. It says in the documentation at http://xarray.pydata.org/en/stable/data-structures.html#coordinates ""non-dimension coordinates are variables that contain coordinate data, but are not a dimension coordinate. They can be multidimensional (see Working with Multidimensional Coordinates), and there is no relationship between the name of a non-dimension coordinate and the name(s) of its dimension(s). Non-dimension coordinates can be **useful for indexing** or plotting; otherwise, xarray does not make any direct use of the values associated with them. They are not used for alignment or automatic indexing, nor are they required to match when doing arithmetic (see Coordinates)."" Is this an issue that has been resolved, and if so an example on how to do this would be helpful in the documentation. If not, should the documentation be corrected?","{""total_count"": 2, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 2}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-592475338,https://api.github.com/repos/pydata/xarray/issues/2028,592475338,MDEyOklzc3VlQ29tbWVudDU5MjQ3NTMzOA==,6213168,2020-02-28T11:35:04Z,2020-02-28T11:35:04Z,MEMBER,Still relevant,"{""total_count"": 8, ""+1"": 8, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-592100301,https://api.github.com/repos/pydata/xarray/issues/2028,592100301,MDEyOklzc3VlQ29tbWVudDU5MjEwMDMwMQ==,26384082,2020-02-27T18:11:35Z,2020-02-27T18:11:35Z,NONE,"In order to maintain a list of currently relevant issues, we mark issues as stale after a period of inactivity If this issue remains relevant, please comment here or remove the `stale` label; otherwise it will be marked as closed automatically ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-377318151,https://api.github.com/repos/pydata/xarray/issues/2028,377318151,MDEyOklzc3VlQ29tbWVudDM3NzMxODE1MQ==,1217238,2018-03-29T17:51:27Z,2018-03-29T17:51:27Z,MEMBER,"@maxim-lian Probably. Or you could make the `pandas.Index` explicitly, e.g., `da.sel(a=da.c.to_index().get_indexer(['x', 'y']))`. We should really add `DataArray.isin()` (https://github.com/pydata/xarray/issues/1268).","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,309691307 https://github.com/pydata/xarray/issues/2028#issuecomment-377316057,https://api.github.com/repos/pydata/xarray/issues/2028,377316057,MDEyOklzc3VlQ29tbWVudDM3NzMxNjA1Nw==,5635139,2018-03-29T17:44:11Z,2018-03-29T17:44:11Z,MEMBER,"What's the easiest way to select on multiple values? Is it really this: ```python In [63]: da = xr.DataArray(np.random.rand(3,2), dims=list('ab'), coords={'c':(('a',),list('xyz'))}) In [64]: da.sel(a=(np.isin(da.c, list('xy')))) Out[64]: array([[0.383989, 0.174317], [0.698948, 0.815993]]) Coordinates: c (a) array([20., 30.]) Coordinates: * country (country)