问题描述
我有一个名为 da_ffdi
的 DataArray。它包含三个维度:time
、latitude
和longitude
。时间维度有一组连续的小时标签,从 1972-01-20T00:00:00 到 2020-06-30T00:00:00。
xarray.DataArray
'FFDI' time: 424680 latitude: 148 longitude: 244
Coordinates:
latitude (latitude) float32 -39.2 -39.163948 ... -33.9
longitude (longitude) float32 140.8 140.83786 ... 149.96214 150.0
time (time) datetime64[ns] 1972-01-20 ... 2020-06-30T23:00:00
array(['1972-01-20T00:00:00.000000000','1972-01-20T01:00:00.000000000','1972-01-20T02:00:00.000000000',...,'2020-06-30T21:00:00.000000000','2020-06-30T22:00:00.000000000','2020-06-30T23:00:00.000000000'],dtype='datetime64[ns]')
array(['2013-03-27','2019-03-25','2013-04-27','2013-03-21','2020-05-30','2018-03-18','2019-11-21','2018-03-17','2013-04-28','2008-03-14','2014-02-09','2013-05-03','2013-05-04','2015-05-05','2014-07-31','2003-06-06','2018-02-14','2018-04-14','1972-04-23','2014-01-01','1975-02-08','2008-04-02','1979-02-15','1975-03-02','2001-02-21','2006-08-16','2001-03-16','2018-03-25','2009-02-07','2008-04-03','2016-05-01','1990-01-30','1998-03-22','1982-05-19','1986-03-20','1987-11-23','2019-12-20','1998-02-26','1985-03-04','2018-05-04'])
我想要实现的是能够从 da_ffdi
中选择所有数据,其中 time
中的 np_dates
标签。
我跑了:
da_ffdi.sel(time=np_dates)
KeyError: "not all values found in index 'time'"
如何解决这个问题?这可以通过运行 where
函数来实现吗?
解决方法
DataArray.isin
;来自文档:
lookup = xr.DataArray([-1,-2,-3,-4,-5],dims=["x"])
da.where(lookup.isin([-2,-4]),drop=True)
Out[36]:
<xarray.DataArray (x: 2)>
array([2.,4.])
Dimensions without coordinates: x