2014-02-26 29 views
0

插我有插在網格的功能與scipy.interpolate.griddata像這樣如何解開用的GridData

interpolated_quantity = scipy.interpolate.griddata(old_points, old_array, grid_x, grid_y, grid_z, method='nearest') 

我想要做的是轉換有一組4 1-d陣列的數據:3每個單元的位置以及每個單元中對應值爲interpolated quantity的位置。

到目前爲止,我使用的是非常緩慢的,耗時的操作:

arrays={} 

base_gridx = linspace(xmin,xmax,abs(ngridx)+1) 
base_gridy = linspace(ymin,ymax,abs(ngridy)+1) 
base_gridz = linspace(zmin,zmax,abs(ngridz)+1) 
cx = (base_gridx[1:]+base_gridx[:-1])/2. 
cy = (base_gridy[1:]+base_gridy[:-1])/2. 
cz = (base_gridz[1:]+base_gridz[:-1])/2. 

data_len = len(cx)*len(cy)*len(cz) 

for ii in arange(0,len(cx)): 
    for jj in arange(0,len(cy)): 
    for kk in arange(0,len(cz)): 
     arrays["x"].append(cx[ii]) 
     arrays["y"].append(cy[jj]) 
     arrays["z"].append(cz[kk]) 
     arrays["prop"].append(interpolated quantity[ii][jj][kk]) 

這工作,但它只是需要大量的時間。你認爲可能有更快的方法來做到這一點?也許使用ravel

回答

0

它就像你所建議的那樣簡單。四個陣列是:

grid_x.ravel() 
grid_y.ravel() 
grid_z.ravel() 
interpolated_quantity.ravel()