Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy interp不插值/外推值,仅查找数据点是否高于或低于最大经验值_Python_Numpy - Fatal编程技术网

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

Python Numpy interp不插值/外推值,仅查找数据点是否高于或低于最大经验值,python,numpy,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.173808136289

我有以下经验数据:

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]])
我想根据一个新的数据点,类似于第二列,从这个数据中插值或外推一个值。eg-38。如果我尝试插值,这个值interp返回6.5

numpy.interp(-38, emp_data[:,1], emp_data[:,0])
Out[65]: 6.5
numpy interp对低于-48.89(经验数据中的最大值)的任何值返回6.5,对高于-48.89的任何值返回0.5。有人知道为什么吗


感谢
numpy.interp

的帮助

不检查x坐标序列
xp
是否增加。如果
xp
没有增加,结果毫无意义。一个简单的检查 递增是::

np.all(np.diff(xp) > 0)
看起来你混淆了横坐标,即x值,和纵坐标,即f(x)或y值


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

的根。文档中提到
xp
值必须增加。你试过对数组进行排序吗?看起来你是对的,我订购了xp,它在数据内插值,但不能在xp范围外进行外推。你有没有什么简单的方法可以将多项式拟合到数据中(例如另一个numpy函数?)我不认为像你通过排序和插值那样反转x和y是个好主意,因为只有当你的函数是内射的,即增加(或减少)时,这才是适定的。有
numpy.polyfit
来找到插值函数。你应该用它来寻找根。然而,外推会导致很大的误差。我不需要非常精确——只要给我一个大概的数字就行了。所以如果我找到多项式,我想找到p的值,其中p(x)=-38(或者任何我想外推的值?