xarray: заменить только положительные значения на 1

У меня есть xarray, который выглядит примерно так:

component_list = ['c1','c2']  
space_list = ['01_reg','02_reg','03_reg','04_reg','05_reg']

data = np.array([ [np.nan for i in range(5)],
                       [3.0, 3.0, 3.0, 0.0, 0.0] 
                   ])

xr = xr.DataArray(data, 
                   coords=[component_list, space_list], 
                   dims=['component','space'])  

Я хотел бы заменить все положительные значения на 1, оставить 0 как 0, а nas как nas. Я пробовал следующее, но nas тоже превращается в 1:

xr.where(xr>0, 1)

Этот вопрос задавался здесь раньше, но предложенное решение не работает. Как я могу этого добиться?


person atomaty    schedule 01.06.2021    source источник


Ответы (1)


Одно из решений - найти все нулевые и нулевые значения и выполнить логическое или. Это было бы условием. Если это условие не выполняется, замените значение на 1.

xr.where(np.logical_or(xr.isnull(), xr==0), 1)
person atomaty    schedule 01.06.2021