如果满足特定条件,我需要分配一个xr.DataArray
(gt
)的值。如果满足其他条件,则另一个xr.DataArray
(lt
)的值。我希望它可以扩展(可能有两个以上的条件可能无法涵盖所有可能性)。
理想情况下,我也想在xarray
中完成所有操作。
我目前有一个解决方案,可以写出numpy
,并使用在那里建立的掩码数组功能。
import pandas as pd
import numpy as np
import xarray as xr
time = pd.date_range('2010-01-01','2011-12-31',freq='M')
lat = np.linspace(-5.175003, -4.7250023, 10)
lon = np.linspace(33.524994, 33.97499, 10)
precip = np.random.normal(0, 1, size=(len(time), len(lat), len(lon)))
ds = xr.Dataset(
{'precip': (['time', 'lat', 'lon'], precip)},
coords={
'lon': lon,
'lat': lat,
'time': time,
}
)
# DUMMY DataArray's for filling in gt / lt values
lt = xr.full_like(da, -100)
gt = xr.full_like(da, 100)
当DataArray
小于1('-100')时,我想要一个lt
,其值来自da.values
,而{{1} }})时gt
大于1。
100
da.values
语法从另一个(相同的<xarray.Dataset>
Dimensions: (lat: 10, lon: 10, time: 24)
Coordinates:
* lon (lon) float64 33.52 33.57 33.62 33.67 ... 33.82 33.87 33.92 33.97
* lat (lat) float64 -5.175 -5.125 -5.075 -5.025 ... -4.825 -4.775 -4.725
* time (time) datetime64[ns] 2010-01-31 2010-02-28 ... 2011-12-31
Data variables:
out (time, lat, lon) float64 -100.0 -100.0 -100.0 ... -100.0 -100.0
.where
)对象中进行选择size
xr.Dataset
语法进行重组np.ma.array
np.ma.array
这看起来像:
如果可能的话,我希望有一种方法可以有效地/自然地在xarray中执行此操作。