2017-07-31 81 views
0

我想知道是否有在3D空間中插值的函數。舉例來說,我有一個有x,y,z座標的矩陣。有沒有一種方法可以插值並計算給定x和y的z座標。例如:使用numpy在3D空間中插值

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

,我需要計算的z座標,當x = 3 Y = 3,5-

+1

'scipy.interpolate.interp2d'? –

回答

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) 

這段代碼應該輸出VAL ue

5.489419430226453 

它首先將n * 3個值的輸入列表轉換爲三個numpy數組xs,ys和zs。然後使用前一階段創建的pointsvalues陣列創建插補器對象。