使用 numpy 在 3D 空间中插值



我想知道是否有在 3D 空间中插值的函数。例如,假设我有一个带有 x,y,z 坐标的矩阵。有没有办法我可以插值和计算给定 x 和 y 的 z 坐标。例如:

A=[1,3,5,
2,3,4
4,4,8
3,4,5]

我需要计算 x = 3 y = 3,5 时的 z 坐标

是的,scipy.interpolate提供了用于在预先计算的网格上进行插值的函数,以及公开__call(x)__函数以按需计算值的对象

考虑以下示例

import numpy as np
from scipy import interpolate
A=[1,3,5,
2,3,4,
4,4,8,
3,4,5]
xs = A[0::3]
ys = A[1::3]
zs = A[2::3]
points=np.zeros((len(xs),2))
values=np.zeros((len(xs)))
points[:,0] = xs
points[:,1] = ys
values[:] = zs
interpolator = interpolate.CloughTocher2DInterpolator(points,values)
z = interpolator(3,3.5)
print(z)

此代码应输出值

5.489419430226453

它首先将 n*3 值的输入列表转换为三个数字数组 xs、ys 和 zs。然后使用在上一阶段创建的pointsvalues数组创建插值器对象。

最新更新