2016-09-17 4 views
1

通常の入力グリッドからデータを補間しようとすると、scipy.interpolate.interp2dのドキュメントでこの出くわし:あなたの 入力データがグリッド上ScipyのRectBivariateSplineが誤った値を返しますか?

ある場合

もはるかに高速2D補間をRectBivariateSplineを参照してくださいだから私はinterp2dの代わりにscipy.interpolate.RectBivariateSplineを使ってみました。両方の機能のドキュメントは非常によく似ているようですので、私はこれで同様の結果が得られると期待しています:

import numpy as np 
from scipy.interpolate import RectBivariateSpline, interp2d 

from .constants import data 


x_coords = y_coords = np.arange(data.shape[0]) # Square array 
interp_fun = interp2d(x_coords, y_coords, data) 
bivar_fun = RectBivariateSpline(x_coords, y_coords, data) 

data[250, 60] # 76.1451873779 
interp_fun(60, 250) # 76.14518738 
bivar_fun(60, 250, grid=False) # 345.24444 

私はこれを間違って呼び出していますか?私はなぜRectBivariateSplineに基づく補間がこれほど離れているのか分かりません。

おそらくRectBivariateSplineがデカルト格子で動作し、入力データのy軸を反転させたが、まだ運がないと思われました。

答えて

1

私はbivar_fun(y, x)代わりのbivar_fun(x, y)を呼び出してみてくださいと物事が突然仕事と思っただけで、これを提出する前に右、:

data[250, 60] # 76.1451873779 
interp_fun(60, 250) # 76.14518738 
bivar_fun(250, 60, grid=False) # [ 76.14518738] 

なぜまだかなりわからない、interp_funbivar_funへの最初の引数が同じである必要がありますので、 :

RectBivariateSpline.__call__(x, y, mth=None, dx=0, dy=0, grid=True)

RectBivariateSpline Docs

interp2d.__call__(x, y, dx=0, dy=0)

Interp2d Docs

のGithub上の関連問題でもあります:https://github.com/scipy/scipy/issues/3164

は、
関連する問題