如何消除多维插值中的for循环?

时间:2018-10-04 20:27:43

标签: python multidimensional-array interpolation

我是IDL的Python的新手,并且习惯于索引我所有的循环,因此我试图了解python的工作方式。我有2个数据集(并列和KMCM),一个在细网格上,一个在粗网格上。每个数据集有4个维度[时间,高度,纬度,经度]。我想将精细网格化的数据插值到粗糙网格,以便能够将两者结合起来。现在,我有几个for循环可以做到这一点,但是我确信必须有一种不使用这些循环和调用索引的python方式来做到这一点。这也很慢。我该怎么办?

这是我当前的代码。

idt=10
profileT = np.zeros((nZ,nlat,nlon))


for lon in tie_lon:
    idx = KMCM_lon.tolist().index(min(KMCM_lon, key=lambda x:abs(x-lon)))
    for lat in tie_lat:
        idy = KMCM_lat.tolist().index(min(KMCM_lat, key=lambda x:abs(x-lat)))
        x = KMCM_Z[idt,:,idy,idx]
        y = resid_T[idt,:,idy,idx]
        xvals = tie_Z[idt,:,tie_lat.tolist().index(lat),tie_lon.tolist().index(lon)]
        fT_KMCM = interp1d(x,y,kind='linear',fill_value = 1.0, bounds_error=False)
        profileT[:,tie_lat.tolist().index(lat),tie_lon.tolist().index(lon)] = fT_KMCM(xvals)

0 个答案:

没有答案