代码之家  ›  专栏  ›  技术社区  ›  JackLidge

屏蔽xarray中的数据并更改正确和错误响应的值

  •  1
  • JackLidge  · 技术社区  · 6 年前

    我有一个包含多天数据的xarray数据数组。我可以在一个条件下使用.where函数来屏蔽它,但我想使某个值1上的所有值和该值0下的所有值都为1。理想情况下,我还希望确保数据集中的任何np.nan都不会更改,但这不是一项要求。

    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,则无法设置'other'”

    对此,任何帮助都将不胜感激。

    1 回复  |  直到 5 年前
        1
  •  4
  •   jhamman    5 年前

    a = a.where(a>2, 1, 0) 不起作用,因为 DataArray.where 方法只支持设置 other . 基本上你在做: a = a.where(a>2, other=1, drop=0) .

    相反,您应该使用xarray的3个参数 xr.where 功能:

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