我使用scipy.interpolate.interp2d为曲面创建插值函数。然后我有两个真实的数据数组,我想计算插值点。如果我将这两个数组传递给interp2d函数,我将得到所有点的数组,而不仅仅是点对。
我的解决方案是将两个数组压缩成一个坐标对列表,并将其传递给循环中的插值函数:

f_interp = interpolate.interp2d(X_table, Y_table,Z_table, kind='cubic')

co_ords = zip(X,Y)
out = []
for i in range(len(co_ords)):
    X = co_ords[i][0]
    Y = co_ords[i][1]
    value = f_interp(X,Y)
    out.append(float(value))

我的问题是,有更好的(更优雅,蟒蛇?)达到同样效果的方法?

最佳答案

首先,你可以

for Xtmp,Ytmp in zip(X,Y):
    ...

在你的圈子里。或者更好,只是
out = [float(f_interp(XX,YY)) for XX,YY in zip(X,Y)]

更换回路。
换个角度来说,I suggest using interpolate.griddata。它的性能比interp2d好得多,它接受任意形状的点作为输入。如您所见,interp2d插值器将只返回网格上的值。

07-24 19:24