似乎这里的几个相关问题没有给我想要的答案。
因此,我有一个 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。
numpy
scipy
这应该可以满足您的描述。(已更新)
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])