4

假设我有一个datasettype xarray.Dataset。我有一个名为 , 的维度(由s 中的所有 sname共享,但我认为这对这个问题并不重要,)并且我想选择一个具有特定名称的条目。我会这样做如下。DataArrayDataset

dataset.sel(name="lucifer")

但是假设我现在想选择一个包含名称“lucifer”“judas”的子数据集。我想做类似的事情:

dataset.sel(name=["lucifer", "judas"])

因为这是我能想象到的最接近 Pandas 的语法。但这给了我一个错误。

InvalidIndexError: Reindexing only valid with uniquely valued Index objects

(顺便说一句,我从 Xarray 得到的每一个错误似乎都是这个确切的错误,我很高兴看到 Xarray 提供更多信息错误。)所以我的问题是,如何从一个命名维度中选择多个命名值?假设命名值没有特定的顺序,所以我不能使用切片。

4

1 回答 1

0

如果您可以为您的维度使用唯一索引,那么您可以使用where非唯一坐标:

In [11]: ds=xr.Dataset({'a': [1,2,3], 'b': ('a', [4,5,5])})
In [14]: ds.where(ds.b==5, drop=True)
Out[14]: 
<xarray.Dataset>
Dimensions:  (a: 2)
Coordinates:
  * a        (a) int64 2 3
Data variables:
    b        (a) float64 5.0 5.0
于 2016-08-10T16:03:37.133 回答