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]])

我想根据类似于第二列的新数据点从该数据中插入或推断一个值。例如-38。如果我尝试插入这个值 interp 返回 6.5。

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

对于低于 -48.89(经验数据中的最大值)的任何值,numpy interp 返回 6.5,对于高于任何值的任何值返回 0.5。有谁知道为什么?

谢谢

4

1 回答 1

1

从帮助numpy.interp

不检查 x 坐标序列xp是否增加。如果 xp不增加,结果是无稽之谈。一个简单的增长检查是:

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

看起来您混淆了横坐标(即 x 值)和纵坐标(即 f(x) 或 y 值)。

因此,如果您想以f(x)=-38自动方式找到 x 值 where ,您需要的不仅仅是插值。例如,您可以将多项式拟合p(x)到数据中,然后查找 的根p(x)-(-38)

于 2013-05-08T09:28:09.217 回答