我有一个xarray.Dataset,例如
<xarray.Dataset>
Dimensions: (latitude: 3259, longitude: 3699, time: 60)
Coordinates:
* time (time) datetime64[ns] 2017-04-03T10:47:53.500000 ...
* latitude (latitude) float64 46.62 46.62 46.62 46.62 46.62 46.62 46.62 ...
* longitude (longitude) float64 7.82 7.82 7.82 7.82 7.82 7.821 7.821 ...
Data variables:
slc (time, latitude, longitude) uint8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
Attributes:
crs: EPSG:4326
我可以使用mcat = (dataset_in.slc == 9) | (dataset_in.slc == 11)
过滤它以获取xarray.DataArray,如下所示
<xarray.DataArray 'slc' (time: 60, latitude: 3259, longitude: 3699)>
array([[[False, False, ..., False, False],
[False, False, ..., False, False],
...,
...
[[False, False, ..., False, False],
[False, False, ..., False, False],
...,
[False, False, ..., False, False],
[False, False, ..., False, False]]], dtype=bool)
Coordinates:
* time (time) datetime64[ns] 2017-04-03T10:47:53.500000 ...
* latitude (latitude) float64 46.62 46.62 46.62 46.62 46.62 46.62 46.62 ...
* longitude (longitude) float64 7.82 7.82 7.82 7.82 7.82 7.821 7.821 ...
但我需要更多的灵活性,而不是使用以下代码的OR条件
monit_cats = [9,11]
mcat = np.isin(dataset_in.slc, monit_cats)
不幸的是,我得到了一个“简单的”numpy.ndarray
[[[False False False ..., False False False]
[False False False ..., False False False]
[False False False ..., False False False]
...,
...
...,
[False False False ..., False False False]
[False False False ..., False False False]
[False False False ..., False False False]]]
我怎么能得到完全相同的第一个输出(用xarray.DataArray格式)?
感谢您的任何信息。
答案 0 :(得分:0)
这可以通过xarray apply_ufunc
完全干净地完成:
monit_cats = [9,11]
mcat = xr.apply_ufunc(np.isin, dataset_in.slc, monit_cats)
mcats
将是xarray.DataArray
,尺寸/坐标为dataset_in.slc
。