在Python中,我想使用scipy.interpolate.griddata(x,y,z,xi,yi)对一些数据进行插值。
由于我希望在等间距XI-YI网格上的X-Y网格映射上使用不等间距的原始数据,因此我必须使用网格作为:
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的网格数据函数相比,scipys的网格数据似乎不接受矩阵作为x,y,z的输入。谁能给我一个解决这个问题的提示?
发布于 2011-06-15 22:15:36
在您的例子中,正确的调用序列是
print scipy.interpolate.griddata((X.ravel(),Y.ravel()), (X**2+Y**2).ravel(), (XI, YI))也就是说,您需要将输入数据点转换为1-d。(可以修复此问题,以便在下一版本的Scipy中不使用.ravel()。)
发布于 2011-06-15 22:10:53
我认为你需要重塑你的网格,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)https://stackoverflow.com/questions/6358596
复制相似问题