Python 使用多个y值插值

Python 使用多个y值插值,python,scipy,interpolation,quantile,cdf,Python,Scipy,Interpolation,Quantile,Cdf,我试图使用scipy的几种方法,从一组x(分位数)和y(值)样本中插值a(逆CDF)。 由于它是一个分位数函数,这些值有时会重复自身。例如,CDF最终在1处变平,因此x=1会重复几个增加的y值: x = [0, 0.19026078648166053, 0.5364188373245662, 0.9627927389184123, 0.9997059472175255, 0.9997059472175255, 0.9999999999999999, 0.9999999999999999, 0.9

我试图使用scipy的几种方法,从一组x(分位数)和y(值)样本中插值a(逆CDF)。 由于它是一个分位数函数,这些值有时会重复自身。例如,CDF最终在1处变平,因此x=1会重复几个增加的y值:

x = [0, 0.19026078648166053, 0.5364188373245662, 0.9627927389184123, 0.9997059472175255, 0.9997059472175255, 0.9999999999999999, 0.9999999999999999, 0.9999999999999999]
y = [0, 468, 1171, 4918, 10072, 20066, 29982, 45207, 59964]
似乎有些插值方法是为函数构建的,并且不喜欢重复x。有些人甚至认为重复的x是导数()


你知道我该如何解决这个问题吗?

我刚刚遇到了同样的问题(我有一条重复x值的曲线,并希望对其进行插值,以获得x-y平面中数据点之间相同的弧长),然后得出了以下对我有效的解决方案: 将x-y函数视为一个具有x(t)和y(t)的参数函数,其中t是一些递增参数(简单地说是x或y数组的索引,或弧长)。 然后可以分别对x(t)和y(t)进行插值。 通过这种方式,您无法直接访问y(x),但您可以扫描t值,以获得正在查找的插值x和y值的组合。
在某种2D插值中也可能会这样做。

在您的特定情况下,如果图表的一端开始在角度上发散,我过去已经这样做过:取具有相同x值的点(全部1),假设其中有N个,然后用N个点(例如)跨越一个从0.999到1.001的值范围(例如linspace)并为N个点中的每个点指定唯一的x值(因此y增加)。从外观上看,实际上是一样的,但是插值器现在可以工作了。这取决于你的申请,我以前已经完成了这项工作。在其他情况下,相同的x值是由噪声引起的,显然,首先应用一种更平滑的方法会更好,等等。