python - 大型不规则网格到规则网格的二维插值

标签 python numpy grid scipy interpolation

我有 2048x2048 的不规则数据网格zi = f(xi, yi),它们本质上是三组独立的 2048 个实数值。我需要将其平滑地插值(可能是双三次样条)到 wi = f(ui, vi) 的常规网格中,其中 uivi 是从 0 到 2047 的整数值。

我已经尝试过 griddata,它似乎在小于 1000x1000 的图像上工作良好,但当你达到 1500x1500 时就会爆炸(显然是 Delaunay 网格的内存 qhull 错误)。我看过一些 ndimage 函数,即 geometric_transformRectBivariateSplinemap_coordinates,但它们似乎都需要正则化数据作为输入。我也可能遗漏了一些东西并且只是实现错误!

我正在尝试使用 Python/SciPy 来执行我一直在使用 tformarraymakeresampler 执行的这个 Matlab 脚本。关于我可以使用什么功能来处理这个大数据集有什么建议吗?谢谢!

最佳答案

我尝试重现您的错误,但没有成功。你是32位系统吗?我在使用 scipy/numpy 和大型数组时遇到问题,所以切换到 64 位,从那以后就没有问题了。

这是我用来尝试重现您的错误的代码(它不会生成任何有用的东西,但至少应该遇到相同的错误):

y,x=indices([2048,2048],dtype='float64')
z = randn(2048,2048)
yr = y + randn(2048,2048)
xr = x + randn(2048,2048)
zn = griddata(xr.ravel(),yr.ravel(),z.ravel(),x,y)
zl = griddata(xr.ravel(),yr.ravel(),z.ravel(),x,y,interp='linear')

这适用于我的机器。

如果您不能运行 64 位版本的 python(这可能会很困难,具体取决于您使用的操作系统),您能否将 2048x2048 网格分成 4 个 1024x1024 网格?

关于python - 大型不规则网格到规则网格的二维插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7068126/

相关文章:

python - 从 S3 下载大量文件

android - 如何使 GridView 在 android 中水平滚动而不是垂直滚动?

python - 如何设置 x&y 轴的对数刻度?

python - 从 Excel 读取时如何替换标题行 - Python

asp.net-mvc - 如何使用 Kendo UI Grid 和 ASP.NET MVC 为 ViewModel 的任何字段设置默认值?

kendo-ui - 剑道 UI 工具栏按钮

python - 如何将数以百万计的联系人添加到 Telegram ?

python - Google App Engine 中的函数调用 - Python

Python 3.9 pip 安装

python - 在 genfromtxt next(fhd) 中,添加新的 "with open file"行时出现 StopIteration 错误