【发布时间】:2011-12-03 20:08:40
【问题描述】:
我正在尝试使用 Python 将复杂值从一个不规则网格插入到另一个不规则网格。网格是二维的,有 103,113 个数据点。我正在使用 Python 2.6.6、Scipy 0.7.2、Numpy 1.3.0、Matplotlib 0.99.3
在 Matlab 中使用 griddata 大约需要 5 秒。
BnGRID2 = griddata(R_GRID1,Z_GRID1,BnGRID1,R_GRID2,Z_GRID2) (MATLAB)
(注意所有数组都是 201 x 513)
但是,如果我尝试使用 matplotlib.mlab.griddata,即使我尝试仅使用实部,也会出现 memoryError:
mlab.griddata(R_GRID1.flatten(),Z_GRID1.flatten(),num.real(BnGRID1.flatten()),R_GRID2.flatten(),Z_GRID2.flatten())
如果我尝试使用 interp2d,我会遇到分段错误并且 Python 退出:
a = interp.interp2d(R_GRID1,Z_GRID1,num.real(BnGRID1))
我已经尝试使用 KDTree,这似乎可以正常工作,但是,与 Matlab 的几秒钟相比,它需要几分钟,但我还没有过多地探索这个选项。
想知道是否有人知道如何像 Matlab 一样快速完成这项工作?我注意到新版本的 Scipy 也有 griddata,有谁知道这是否可以处理大型不规则网格?
【问题讨论】:
标签: python numpy matplotlib scipy interpolation