NumPy中有类似MATLAB的griddata3吗?

0 投票
3 回答
874 浏览
提问于 2025-04-15 17:26

我知道在 NumPy 中可以通过 Matplotlib 使用 griddata,但有没有类似 griddata3 的东西(就是处理更高维度的)呢?

换句话说,我有一组数据 (x,y,z,d(x,y,z)),其中 (x,y,z) 形成一个不规则的网格,而 d(x,y,z) 是一个关于这三个变量的标量函数。我需要为一组新的点 (xi, yi, zi) 生成 d(xi, yi, zi) 的值,使用某种可以处理原始 (x,y,z) 数据不均匀性的插值方法。

最终,我需要把 (xi, yi, zi, d(xi, yi, zi)) 这些数据以某种方式呈现为一个表面,但这个问题可以稍后再解决。我也没有 d(.) 函数的解析形式;我只是有它的数据。

3 个回答

0

我对griddata3不太熟悉,不过你可以看看meshgrid这个东西,还有这个相关的帖子

1

我不太确定你打算怎么展示一个由三个变量组成的标量函数的表面,除了可能使用切平面或者类似的方法。Mayavi(其实是支持Mayavi的VTK)可以高效地进行Delaunay三角剖分,这个功能通过enthought.mayavi.mlab.pipeline.delaunay3d实现,这也是griddata3使用的核心算法。你可以查看他们发布的二维示例代码,只需增加一个维度(并使用delaunay3d)。我不知道有没有办法明确获取用于渲染表面的插值值,但可能可以通过Mayavi进行采样,你可以查阅文档或者在Enthought的邮件列表上询问。

另外,NCAR的natgrid库中的某个C函数可能会有用,比如dsgrid3d。还有一个部分封装已经作为matplotlib工具包实现。

1

SciPy 0.9(目前,已经发布了第一个测试版)有了一个新的griddata函数,这个函数可以处理多维数据。

撰写回答