xarray - найти элементы в зависимости от нескольких условий - PullRequest
0 голосов
/ 23 мая 2019

У меня есть объект DataArray xarray с именем "da_kbdi" с именем переменной "KBDI_AWAP".

<xarray.DataArray 'KBDI-AWAP' (time: 8784, latitude: 106, longitude: 193)>
dask.array<shape=(8784, 106, 193), dtype=float32, chunksize=(744, 106, 193)>
Coordinates:
  * time       (time) datetime64[ns] 2000-01-01 ... 2000-12-31T23:00:00
  * latitude   (latitude) float64 -39.2 -39.15 -39.1 ... -34.0 -33.95 -33.9
  * longitude  (longitude) float64 140.8 140.8 140.9 140.9 ... 149.9 150.0 150.0

Измерение времени имеет почасовые координаты, охватывающие год, например2000-01-01T00: 00: 00, 2000-01-01T01: 00: 00, ... ..., 2000-12-31T23: 00: 00.

Что мне нужно сделать, так этонайдите все значения, где KBDI_AWAP <80, когда время обозначает осень (март, апрель и май), и KBDI_AWAP <30, когда время обозначает весну (сентябрь, октябрь и ноябрь). </p>

Таким образом, на выходе будет другой массив данных сте же размеры и координаты и со значением 0 (Ложь) или 1 (Истина), указывающим, что условие выполнено.

Я получил следующие коды.

criteria1 = xr.where(da_kbdi.time.dt.season == "MAM", da_kbdi < 80, np.nan)
criteria2 = xr.where(da_kbdi.time.dt.season == "SON", da_kbdi < 30, np.nan)

Нокак их объединить?Я не уверен, что это лучший способ добиться этого?

...