我想知道是否有在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坐标答案 0 :(得分:2)
是的,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值的输入列表转换为三个numpy数组xs,ys和zs。然后使用在前一阶段创建的points
和values
数组创建插补器对象。