Python-使用Griddata/Delaunay tri插值二维不规则点

Python-使用Griddata/Delaunay tri插值二维不规则点,python,numpy,datagrid,interpolation,delaunay,Python,Numpy,Datagrid,Interpolation,Delaunay,我的目标是插入一些数据。要做到这一点,我想使用griddata,因为我可以有很多点,因此在这种情况下interp2D可能会失败 我的初始坐标是InstT[:,1]和InstT[:,2],要插值的值是data,新坐标是InstTplus1[:,1]+shiftX和InstTplus1[:,2] 使用Griddata,我使用np.meshgrid创建了一个meshgrid,如下所示。但是我的结果与interp2D的结果不同(如下所示)。 这似乎是由于我在使用网格时组织数据的错误造成的 from sc

我的目标是插入一些数据。要做到这一点,我想使用
griddata
,因为我可以有很多点,因此在这种情况下
interp2D
可能会失败

我的初始坐标是
InstT[:,1]
InstT[:,2]
,要插值的值是
data
,新坐标是
InstTplus1[:,1]+shiftX
InstTplus1[:,2]

使用Griddata,我使用np.meshgrid创建了一个meshgrid,如下所示。但是我的结果与
interp2D
的结果不同(如下所示)。 这似乎是由于我在使用网格时组织数据的错误造成的

from scipy.interpolate import griddata
import numpy as np

InstT= np.array([[  2.00000000e+00,   1.74255667e+00,  -8.81166667e-02],
           [  7.00000000e+00,   2.05894667e+00,  -2.56740000e-01],
           [  1.20000000e+01,   1.63387667e+00,   2.36914667e+00],
           [  1.70000000e+01,   2.40539000e+00,   5.91853333e-01],
           [  2.20000000e+01,   2.31335000e+00,  -1.02655333e+00],
           [  2.80000000e+01,   1.85235667e+00,   2.75853333e-01],
           [  3.50000000e+01,   1.02668667e+00,   2.05220000e-01],
           [  4.10000000e+01,   2.15202667e+00,  -4.12653333e-01],
           [  4.60000000e+01,   2.40584667e+00,  -8.79340000e-01],
           [  5.10000000e+01,   2.00418000e+00,  -1.79855667e+00],
           [  5.60000000e+01,   2.05642333e+00,   3.20066667e-02],
           [  6.10000000e+01,   1.15410667e+00,   2.35290000e+00],
           [  6.60000000e+01,   1.48612333e+00,  -1.97530333e+00],
           [  7.10000000e+01,   2.04775333e+00,   3.16490000e-01],
           [  7.60000000e+01,   2.02982333e+00,  -1.18378000e+00],
           [  8.10000000e+01,   2.41636333e+00,   1.77193667e+00],
           [  8.60000000e+01,   1.90254000e+00,   1.99800000e+00],
           [  9.10000000e+01,   1.44889333e+00,   1.95262667e+00],
           [  9.60000000e+01,   1.97192000e+00,   1.21600333e+00],
           [  1.01000000e+02,   1.80270000e+00,  -1.25049000e+00],
           [  1.06000000e+02,   1.70948333e+00,  -1.98784667e+00],
           [  1.11000000e+02,   1.80093667e+00,   8.30646667e-01],
           [  1.16000000e+02,   1.30976333e+00,  -8.02600000e-01],
           [  1.21000000e+02,   3.00946667e-01,   2.98326667e-01],
           [  1.27000000e+02,   5.78493333e-01,  -2.31010667e+00],
           [  1.32000000e+02,   5.11150000e-01,   9.93530000e-01],
           [  1.37000000e+02,   1.23912333e+00,   6.69696667e-01],
           [  1.42000000e+02,   6.80790000e-01,  -1.21987667e+00],
           [  1.47000000e+02,  -4.69450000e-01,   2.07277000e+00],
           [  1.55000000e+02,   6.11773333e-01,   6.21750000e-01],
           [  1.66000000e+02,  -4.59600000e-01,  -2.06928000e+00]])


InstTplus1= np.array([[  1.00000000e+00,  -6.75000000e-01,  -1.37093667e+00],
       [  3.00000000e+01,   2.66313333e-01,   2.12887667e+00],
       [  9.00000000e+01,   5.82246667e-01,   2.32840333e+00],
       [  1.27000000e+02,   5.78493333e-01,  -2.31010667e+00],
       [  1.45000000e+02,  -2.41333333e-03,  -1.50423000e+00],
       [  1.51000000e+02,  -3.85496667e-01,  -1.65609333e+00],
       [  1.57000000e+02,   8.36200000e-02,  -1.12576000e+00],
       [  1.62000000e+02,  -7.54953333e-01,   1.38679667e+00],
       [  1.67000000e+02,  -1.33794667e+00,  -1.49130000e-01],
       [  1.72000000e+02,  -2.25452000e+00,  -1.93793333e-01],
       [  1.77000000e+02,  -2.21772333e+00,  -1.88520667e+00]])



data= np.array([[  2.00000000e+00,  -6.76821461e-05],
       [  7.00000000e+00,  -7.86778619e-05],
       [  1.20000000e+01,  -6.95431069e-05],
       [  1.70000000e+01,  -9.69626174e-05],
       [  2.20000000e+01,  -7.68471315e-05],
       [  2.80000000e+01,  -7.41450228e-05],
       [  3.50000000e+01,  -4.12677958e-05],
       [  4.10000000e+01,  -8.06935132e-05],
       [  4.60000000e+01,  -8.33900849e-05],
       [  5.10000000e+01,  -3.96908987e-05],
       [  5.60000000e+01,  -8.08105809e-05],
       [  6.10000000e+01,  -4.97135382e-05],
       [  6.60000000e+01,  -1.98796779e-05],
       [  7.10000000e+01,  -8.19658308e-05],
       [  7.60000000e+01,  -6.23518269e-05],
       [  8.10000000e+01,  -9.97619742e-05],
       [  8.60000000e+01,  -7.95730205e-05],
       [  9.10000000e+01,  -6.10744925e-05],
       [  9.60000000e+01,  -8.12113819e-05],
       [  1.01000000e+02,  -5.24605251e-05],
       [  1.06000000e+02,  -2.36093623e-05],
       [  1.11000000e+02,  -7.37657756e-05],
       [  1.16000000e+02,  -4.39291265e-05],
       [  1.21000000e+02,  -1.31381378e-05],
       [  1.27000000e+02,  -2.62531466e-06],
       [  1.32000000e+02,  -2.18848005e-05],
       [  1.37000000e+02,  -5.09233626e-05],
       [  1.42000000e+02,  -1.88998207e-05],
       [  1.47000000e+02,   1.89757963e-05],
       [  1.55000000e+02,  -2.56628834e-05],
       [  1.66000000e+02,   4.17862704e-06]])


shiftX = 1.6125

#If i do with interp2D :
from scipy import interpolate
f = interpolate.interp2d(InstT[:,1], InstT[:,2], data[:,1], kind='linear')
znew = f(shiftX + InstTplus1[:,1], InstTplus1[:,2])


#If i do with Griddata:

[Y2,X2]=np.meshgrid(InstTplus1[:,2],InstTplus1[:,1]+shiftX)
grid_z0 = griddata(InstT[:,1:], data[:,1], (X2, Y2), method='linear')
正如我之前所说的,使用Griddata得到的结果可能是组织坐标的错误。。。

---以后编辑----

我的坐标不规则,如下所示:


代码示例是否有用?我想知道是否可以使用Delaunay三角化来插值?由于问题似乎来自网格网格,您没有显示如何绘制这些内容,但请注意,
InstTplus1[:,1]
InstTplus1[:,2]
的顺序不是递增的。这会把情节搞得一团糟。另外,在较旧的Scipy版本中,我从interp2d得到一个ValueError,因为计算网格坐标没有排序。代码示例是否有用?我在问是否可以使用Delaunay三角化来插值?由于问题似乎来自网格网格,您没有显示如何绘制这些内容,但请注意,
InstTplus1[:,1]
InstTplus1[:,2]
的顺序不是递增的。这会把情节搞得一团糟。此外,在较旧的Scipy版本中,我从interp2d获得一个ValueError,因为计算网格坐标没有排序。