使用numpy在3D空间中插值

时间:2017-07-31 10:22:50

标签: python numpy

我想知道是否有在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坐标

1 个答案:

答案 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。然后使用在前一阶段创建的pointsvalues数组创建插补器对象。