2

interp2MATLABの関数と同等のPythonが必要です。このMATLABの例をPythonで動作させようとしていますが、できません。

import numpy as np

from scipy.interpolate import interp2d
from scipy.interpolate import RectBivariateSpline

service = np.array(range(10, 31, 10))
years = np.array(range(1950, 1991, 10))

wage = np.array([[150.6970,199.5920,187.6250],
    [179.3230, 195.0720, 250.2870],
    [203.2120, 179.0920, 322.7670],
    [226.5050, 153.7060, 426.7300],
    [249.6330, 120.2810, 598.2430]])

ip = RectBivariateSpline(years, service, wage)

print(ip(15, 1975))

しかし、私は解決できないこのエラー(RectBivariateSplineで)を受け取ります:

    Traceback (most recent call last):
  File "/Users/andrea/Documents/workspace/PythonProjects/pyArmBot/src/foo.py", line 15, in <module>
    ip = RectBivariateSpline(years, service, wage)
  File "/Library/Python/2.7/site-packages/scipy-0.10.1-py2.7-macosx-10.7-intel.egg/scipy/interpolate/fitpack2.py", line 728, in __init__
    kx,ky,s)
4

3 に答える 3

1

印刷行の代わりに次の行を使用して値を返すには、ipを呼び出す必要があると思います。

print(ip.ev(15, 1975))

アップデート:

かなり簡単な調整。そして、私の顔を見つめていました。二変量スプラインの次数であるkxとkyの値を設定できます。こちらのドキュメントを参照してください

とにかく、次のように行を調整するだけです。

ip = RectBivariateSpline(years, service, wage, kx=2, ky=2)

調整したくない場合は、kxを調整する必要はありません。kxを3のままにすると、補間が大きく変わるとは思えません。

于 2012-07-16T12:34:05.503 に答える
0

blueSurfer、補間を設定した方法で、正しい結果が得られると思いますが、ip(1975, 15)その逆ではありません。

于 2015-05-18T10:51:07.100 に答える
0

scipy.ndimage.map_coordinates私は同じ問題に遭遇し、それがと同じことをすることを理解しましたVq = interp2(V,Xq,Yq)。これらのコマンドのドキュメントを読んで、ケースの解決策を見つけてください。

Matlabのこれを試してみてくださいVq = interp2(V,Xq,Yq)

Vq = scipy.ndimage.map_coordinates(V, [Xq.ravel(), Yq.ravel()], order=3, mode='nearest').reshape(V.shape)
于 2017-05-08T14:30:34.877 に答える