hbkumar
hbkumar

Reputation: 65

xarray .where() function is too slow over datasets

I am using .where() function to select time and certain criteria in xarray dataset.

import numpy as np
import xarray as xr

ds1 = xr.open_dataset('COD.nc')
ds2 = xr.open_dataset('CDNC.nc')
ds3 = xr.open_dataset('LWP.nc')
ds4 = xr.open_dataset('CTT.nc')   
ds5 = xr.open_dataset('CTP.nc')
ds6 = xr.open_dataset('CER.nc')  

ds11 = ds1.where((ds1.time == ds2.time))
ds22 = ds2.where((ds2.time == ds11.time))
ds33 = ds3.where((ds3.time == ds2.time))
ds44 = ds4.where((ds4.time == ds2.time))
ds55 = ds5.where((ds5.time == ds2.time))
ds66 = ds6.where((ds6.time == ds2.time))

COD = ds11.Cloud_Optical_Thickness
CDNC= ds22.Cloud_Droplet_Concentration
LWP = ds33.Cloud_Water_Path
CTT = ds44.Cloud_Top_Temperature
CTP = ds55.Cloud_Top_Pressure
CER = ds66.Cloud_Effective_Radius

cod  = COD.where((CTT >= 273.0) & (CTP > 680.0) & (CER > 4) & (COD > 4)) 
lwp  = LWP.where((CTT >= 273.0) & (CTP > 680.0) & (CER > 4) & (COD > 4)) 
cdnc = CDNC.where((CTT >= 273.0) & (CTP > 680.0) & (CER > 4) & (COD > 4))  

but its too slow....even for small dataset...... Dimension of my each dataset is (time: 7555, lat= 35, lon=71). Its running for more than two hours.... is there any way to fasten the performance? Thanks!!

Upvotes: 1

Views: 279

Answers (0)

Related Questions