Python二维插值问题
我目前有三个1D numpy阵列,如下所示:Python二维插值问题,python,numpy,scipy,interpolation,Python,Numpy,Scipy,Interpolation,我目前有三个1D numpy阵列,如下所示: #X Y Z 0 1 2.9 0 3 2.1 0 5 1.753 . . . . . . 0 99 3.82 0.1 1 4.1 0.1 3 5.3 0.1 5 2.65 . . . . . . 0.1 99 5.21 每个z对应于
#X Y Z
0 1 2.9
0 3 2.1
0 5 1.753
. . .
. . .
0 99 3.82
0.1 1 4.1
0.1 3 5.3
0.1 5 2.65
. . .
. . .
0.1 99 5.21
每个z对应于同一索引处的(x,y)对。我试图在我的网格上执行线性插值,这样我就可以看到Z的值,比如说(57.3,33.1)
我的问题是,我的X值以0.1的增量一直增加到几乎100,而我的Y值以2的增量增加。当我尝试使用interp2d或bisplrep进行插值时,总是会出现分段错误。(我假设是因为数据点的数量?)
非常感谢您提供的任何帮助。我的X坐标增量很小,我永远不会尝试检查Z值,比如(50.53,y)。但我需要能够在增量处检查Y值。例如(50.1,33.6)
我建立了一个(x,y)坐标及其对应z值的字典(如果有用的话)
编辑:
因为我已经为每个(x,y)对设置了Z值,所以我不明白为什么下面的代码不起作用(大约20秒后它会出现seg故障)
因为我已经有了这样的X和Y结构,所以我不需要使用np.meshgrid来构建网格。对吗
interp2d
应该正是您想要的。你能发布你尝试过的代码吗?当我试图重现错误时,我的计算机只是在处理它很长一段时间,直到我放弃等待并杀死它。但对较小的一组进行同样的操作效果很好。要进行线性插值,b样条曲线控制点与插值点相等,因此您可以用很少的代码手动执行此操作,只需使用当前数据即可。您需要矩形双变量样条线
。如果数据实际上具有规则结构,则使用分散数据插值算法(如interp2d)效率低下。(不过,分段故障当然是一个bug。)
f = interpolate.interp2d(X, Y, Z, kind='linear')