Маскировать данные в xarray и изменять значения как для True, так и для False ответов.
У меня есть xarray DataArray, который содержит данные за несколько дней. Я могу замаскировать его с помощью функции.where для одного условия, но я бы хотел, чтобы все значения были выше определенного значения 1, а все значения были бы ниже этого значения 0. В идеале я также хотел бы убедиться, что любой np. Nans в наборе данных не изменяются, но это не является обязательным требованием.
import numpy as np
import xarray as xr
dval = np.random.randint(5,size=[3,4,4])
x = [0,1,2,3]
y = [0,1,2,3]
time = ['2017-10-13','2017-10-12','2017-10-11']
a = xr.DataArray(dval,coords=[time,x,y],dims=['time','x','y'])
a = a.where(a>2,1,0) #ideally this would work as (condition,True val, False val)
Это приводит к тому, что ValueError "не может установить" другое ", если drop=True"
Любая помощь с этим будет принята с благодарностью.
1 ответ
a = a.where(a>2, 1, 0)
не будет работать, потому что DataArray.where
метод поддерживает только настройку other
, В основном вы делаете: a = a.where(a>2, other=1, drop=0)
,
Вместо этого вы должны использовать аргумент xarray's 3 xr.where
функция:
a= xr.where(a>2, 1, 0)