【问题标题】:Python griddata meshgridPython 网格数据网格网格
【发布时间】:2011-09-15 13:27:27
【问题描述】:

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

【问题讨论】:

    标签: python matlab scipy mesh interpolation


    【解决方案1】:

    我认为你需要重塑你的网格,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)
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • @pv:谢谢,它有效!为什么要分别通过 (X,Y) 和 (XI,YI) 将矩阵 X,Y 和 XI,YI 合并到一个新数组中?因为 griddata 需要五个变量。但是这样做只剩下三个变量?!
      • 不,griddata 不需要五个变量,只有三个:docs.scipy.org/doc/scipy/reference/generated/…
      猜你喜欢
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多