Маскировать данные в 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)
Другие вопросы по тегам