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,因为计算网格坐标没有排序。