2

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

由于我希望在等间距 XI-YI 网格上的 XY 网格图上的不等间距原始数据,我必须使用网格网格:

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-function 相比,scipys 的 griddata 似乎不接受矩阵作为 x、y、z 的输入。有没有人提示我如何解决这个问题?

4

2 回答 2

3

在您的情况下,正确的调用顺序是

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

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

于 2011-06-15T14:15:36.397 回答
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)
于 2011-06-15T14:10:52.857 回答