2017-02-28 11 views
2

私は通常の2D X、Y、Z配列を持っています。私はポイントX0とY0を持っていて、グリッド上のポイント(X0、Y0)のZ0値を知りたいです。Pythonは2Dグリッド上にポイント値を補間します

私はscipyが補間モジュールを持っていることがわかりましたが、1D/2D配列を補間して1D/2D配列を返しますが、ある点では1つの値しか返さないメソッドはありません。例えば

#My grid data 
X = [ [X11, X12, X13, ..., X1N], 
     [X21, X22, X23, ..., X2N], 
      .... 
     [XN1, XN2, XN3, ..., XNN] 

Y = [ [Y11, Y12, Y13, ..., Y1N], 
     [Y21, Y22, Y23, ..., Y2N], 
      .... 
     [YN1, YN2, YN3, ..., YNN] ] 

Z = [ [Z11, Z12, Z13, ..., Z1N], 
     [Z21, Z22, Z23, ..., Z2N], 
      .... 
     [ZN1, ZN2, ZN3, ..., ZNN] ] 

#Point at which I want to know the value of the Z 
X0, Y0 = ..., ... 

#Now I want to call any function that'll return the value at point (X0, Y0), Z0 is float value, not array 
Z0 = interpolation(X, Y, Z, X0, Y0) 

私は同様の機能がscipy.interpolate.interpnであることを理解が、それは1次元配列でのみ動作し、私は2Dデータ

答えて

4
  • あなたもgriddata使用することができます。

    points = np.array((X.flatten(), Y.flatten())).T 
    values = Z.flatten() 
    
    from scipy.interpolate import griddata 
    Z0 = griddata(points, values, (X0,Y0)) 
    
  • X0およびY0は、配列またはグリッドにすることもできます。

  • また、方法=
  • で補間を選択することもできますが、flatten()の乗り方を見つけることはできますが、それはうまくいくはずです。

https://docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html

関連する問題