如何解网格插值数据

2024-10-04 07:35:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我用scipy.interpolate.griddata在网格上插值一个函数,就像这样

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

我想做的是转换一组4个一维数组: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?你知道吗


Tags: baselenczabsquantitygridcxarrays
1条回答
网友
1楼 · 发布于 2024-10-04 07:35:41

就如你所说的那么简单。这四个阵列是:

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

相关问题 更多 >