Отсутствует вывод условного оператора на xarray - PullRequest
0 голосов
/ 08 июня 2019

У меня есть 5-летние файлы NetCDF с ежедневным шагом по времени и с условным оператором для объединенного отдельного файла, как показано ниже:

ds = xr.open_mfdataset('D:/*.nc', concat_dim='day')
da = ds.var.sel(lon=-79.1833333, lat=42.4, method='nearest')
con = da[(da >= 40.0) & (da <= 60.4)]
val = con.chunks
print(val[0])

Возвращает

(1,3,2,1)

Вместо этого мне нравится возвращать 0 и для года, где условие не было выполнено (поэтому результат должен выглядеть следующим образом 1,3,0,2,1). Любое предложение получить все выходные данные блока, даже если любой из них равен нулю?

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Я понял - не опрятно, но работает.

ds = xr.open_mfdataset('D:/*.nc', concat_dim='day')
da = ds.var.sel(lon=-79.1833333, lat=42.4, method='nearest')
con = da[(da >= 40.0) | (da <= 60.4)]
da_cnt = np.asarray(da.chunks[0]) - np.asarray(con.chunks[0]) # it returns years with zero values as well
0 голосов
/ 10 июня 2019

Попробуйте это:

ds = xr.open_mfdataset('D:/*.nc', concat_dim='day')
da = ds.var.sel(lon=-79.1833333, lat=42.4, method='nearest')
da[~(da >= 40.0) & (da <= 60.4)] == 0 # if the assignment here doesn't work 
# then try using da.where()
con = da[((da >= 40.0) & (da <= 60.4) | (da = 0.))]

...