Numpy interp不插值/外推值,只查找数据点是否高于或低于最大经验值

时间:2013-05-08 09:09:38

标签: python numpy

我有以下经验数据:

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

numpy interp为-48.89以下的任何值(emprical数据中的最大值)返回6.5,对于任何上面的值都返回0.5。谁知道为什么?

感谢

1 个答案:

答案 0 :(得分:1)

numpy.interp

的帮助下
  

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

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

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

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