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)
假设我有一个 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)