drop_sel 不接受切片

drop_sel does not accept slice

假设我有一个 xarray DataArray。其中一个维度是时间维度:

import numpy as np
import xarray as xr
import pandas as pd

time = pd.date_range('1980-01-01', '2017-12-01', freq='MS')
time = xr.DataArray(time, dims=('time',), coords={'time':time})

da = xr.DataArray(np.random.rand(len(time)), dims=('time',), coords={'time':time})

现在如果我只想要从 1990 年到 2000 年的年份,我可以做的很简单:

da.sel(time=slice('1990', '2000'))

但是如果我想放弃这些年怎么办?我想要所有年份的数据 除了 那些。

da.drop_sel(time=slice('1990', '2000'))

失败

TypeError: unhashable type: 'slice'

这是怎么回事?正确的做法是什么?

目前,我正在创建一个新的 DataArray:

tdrop = da.time.sel(time=slice('1990', '2000'))
da.drop_sel(time=tdrop)

但这似乎没有必要令人费解。

使用 where 并将 drop 可选参数设置为 True 来过滤年份怎么样?使用下面的示例,将删除带有 1990 <= year <= 2000 的数据。

da = da.where((da["time.year"] < 1990) | (da["time.year"] > 2000), drop=True)