Skip to main content
 首页 » 编程设计

python之正确使用 numpy 插值

2025年05月04日7hnrainll

我需要在 python 中对非均匀间隔的网格执行一些过滤。因此,我通过 griddata 将不均匀的网格插入到均匀的网格中:

zi = interpolate.griddata((xin, yin), zin, (xi[None,:], yi[:,None]), method='cubic') 

然后,在过滤 zi 之后,我需要将网格反向插值到原始的 xin、yin 点。如果我这样做:

zout = interpolate.griddata((xi, yi), zi, (xin[None,:], yin[:,None]), method='cubic') 

我遇到了一些我不明白的错误,这些错误与 Delaunay 三角剖分中的“qhull 精度警告”和“qhull 错误”有关。

有人知道我该如何解决这个问题吗?是否与 (xin,yin) 未被排序有关?谢谢。

[更新] 我将尝试阐明输入数据是什么。输入数据是在中心(x 轴和 y 轴)进行细化的笛卡尔网格。只要我想对其进行过滤,我就需要对它的统一采样版本进行插值,然后执行另一个插值以从统一采样返回到细化。

xin、yin、zin 是一维数组,还有 xi 和 yi。 zi(griddata 的输出)是一个二维数组。

请您参考如下方法:

您对 griddata 的第二次调用不正确。它期望 xi 和 yi 是每个点的坐标,而 zi[i,:] 是点 对应的值(xi[i], yi[i])。

显然,您的 xi 和 yi 数组恰好有相同数量的 N 条目,所以您不会立即收到错误.该函数无法猜测您实际上希望它执行其他操作。