小能豆

如何在网格中对点列表进行二维插值

py

似乎这里的几个相关问题没有给我想要的答案。

因此,我有一个 2D 查找表,它是一个 2D 网格,其值位于网格坐标处。例如,可以通过以下代码生成此类表:

xx, yy = np.meshgrid(np.arange(100), np.arange(100))
zz = some_function(xx, yy)

现在我有一个网格上散点的坐标列表,例如,我可以通过以下方式生成这样的坐标:

xs = np.random.rand(10) * 100
ys = np.random.rand(10) * 100

scattered_points = [(x, y) for x, y in zip(xs, ys)]

我如何才能为这 10 个点插值出 z 值?我只发现我可以通过搜索 (x, y) 的相邻网格点并在那里执行插值来做到这一点。对于几个点来说这没问题,但我只是想知道是否有更好/更 Python 的方式来使用numpy/来做到这一点scipy


阅读 27

收藏
2024-12-26

共1个答案

小能豆

这应该可以满足您的描述。(已更新)

from scipy.interpolate import interp2d
import numpy as np

xx, yy = np.meshgrid(np.arange(100), np.arange(100))
zz = some_function(xx,yy)

f = interp2d(xx, yy, zz, kind='cubic')

xs = np.random.rand(10) * 100
ys = np.random.rand(10) * 100
zs = np.zeros_like(xs)

for i in range(xs.shape[0]):
    zs[i]=f(xs[i],ys[i])
2024-12-26