我想使用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的输入。有没有人提示我如何解决问题?
答案 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)