Маскировать данные в xarray и изменять значения как для True, так и для False ответов. - PullRequest
0 голосов
/ 15 января 2019

У меня есть 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 Ответ

0 голосов
/ 15 января 2019

a = a.where(a>2, 1, 0) не будет работать, потому что метод DataArray.where поддерживает только настройку other. В основном вы делаете: a = a.where(a>2, other=1, drop=0).

Вместо этого вам следует использовать аргумент xarray 3 xr.where function:

a= xr.where(a>2, 1, 0)
...