2

次の経験的データがあります。

emp_data = np.array([[0.5, -24.111869188789498],
[1.0, -30.166986253668671],
[1.5, -33.310250723584765],
[2.0, -35.629672538473848],
[2.5, -39.416821042883605],
[3.0, -41.05367278405226],
[3.5, -42.702793174115918],
[3.653, -41.173808136289971],
[4.0, -45.327195234249011],
[4.5, -47.170664776211105],
[5.0, -45.838914309065679],
[5.5, -47.83778613822286],
[6.0, -49.55982614930786],
[6.5, -48.899619370977753]])

そして、2 番目の列に似た新しいデータ ポイントに基づいて、このデータから値を内挿または外挿したいと考えています。例: -38。この値を補間しようとすると、interp は 6.5 を返します。

numpy.interp(-38, emp_data[:,1], emp_data[:,0])
Out[65]: 6.5

numpy interp は、-48.89 (経験的データの最大値) 未満の値に対して 6.5 を返し、それを超える値に対して 0.5 を返します。理由を知っている人はいますか?

ありがとう

4

1 に答える 1

1

の助けからnumpy.interp

xpx 座標シーケンスが増加していることを確認しません。が増加しない場合 xp、結果はナンセンスです。増加の簡単なチェックは次のとおりです::

np.all(np.diff(xp) > 0)

横座標 (x 値) と縦座標 (f(x) または y 値) を混同しているようです。

したがって、自動化された方法で x 値を見つけたい場合はf(x)=-38、単なる補間以上のものが必要です。たとえば、多項式p(x)をデータにあてはめてから の根を探すことができますp(x)-(-38)

于 2013-05-08T09:28:09.217 に答える