I have 3 arrays of the same dimension alt = np.array(186 values)
, sza = np.array(186 values)
and per = np.array(186 values)
. I need to make a grid with the per
values over (alt,sza)
.
I have tried the following code and it is time-consuming process. Can anyone suggest improvisation for the code.
als = np.arange(150,510,5) szde = np.arange(90,190,5) val2 = [] for h in range(len(als)-1): val1=[] for h1 in range(len(szde)-1): val=[] for h2 in range(len(per)): if ((als[h+1] >= alt[h2] >= als[h]) and (szde[h1+1] >= sza[h2] >= szde[h1])): val.append(np.array(per[h2]).ravel()) val1.append(np.array(np.mean(val))) val2.append(val1) # val2 is gridded data
Let me know if any clarification is needed.
Thank You.
Advertisement
Answer
I am able to found an alternative method, which worked faster for me. I am posting as the result.
als = np.arange(150,510,5) szde = np.arange(90,190,5) res=[] for h in range(len(als)-1): tempu=[] for h2 in range(len(szde)-1): a11=np.logical_and((alt<als[h+1]),(alt>als[h])) a22=np.logical_and((sza<szde[h2+1]),(sza>szde[h2])) tempu.append(np.nanmean(per[np.where(np.logical_and(a11,a22)==True)])) res.append(tempu) res=np.array(res)
res is the gridded array of (72,19)