Python griddata meshgrid

时间:2011-06-15 13:39:50

标签: python matlab scipy mesh interpolation

Python中的

我想使用scipy.interpolate.griddata(x,y,z,xi,yi)插入一些数据。

由于我想在X-Y网格图上的等间隔XI-YI网格上使用不等间距的原始数据,我必须使用网格网格:

X, Y = numpy.meshgrid([1,2,3], [2,5,6,8])
XI,YI = numpy.meshgrid([1,2,3],[4,5,6,7])
print scipy.interpolate.griddata(X,Y,X**2+Y**2,XI,YI)

不幸的是,与matlab的griddata函数相比,scipys的griddata似乎不接受矩阵作为x,y,z的输入。有没有人提示我如何解决问题?

2 个答案:

答案 0 :(得分:2)

您的案例中的正确通话顺序是

print scipy.interpolate.griddata((X.ravel(),Y.ravel()), (X**2+Y**2).ravel(), (XI, YI))

即,您需要将输入数据点转换为1-d。 (这可以修复为在下一版本的Scipy中没有.ravel()的情况下工作。)

答案 1 :(得分:0)

我认为你需要重塑你的网格,griddata需要一个以列形式坐标的点列表:

points = transpose(reshape((X,Y), (2,12)))
pointsI = transpose(reshape((XI,YI), (2,12)))
Z = reshape(X**2+Y**2, 12)

print scipy.interpolate.griddata(points, Z, pointsI)