首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找横线在各自的Y轴值上穿过的X轴数据点。

查找横线在各自的Y轴值上穿过的X轴数据点。
EN

Stack Overflow用户
提问于 2018-02-10 04:35:28
回答 2查看 800关注 0票数 1

我在x-axis上有一个x-axis数据点,在y-axis (比如[10,15,10,10,20] )上有相应的值。

通常,为了通过给定的y-axis数据点(如y=f(x) )找到x-axis的值点,我检查了它,我们可以通过interpolation使用numpy实现这一点。但我没有找到如何用给定的y轴值插值x轴.根据附加的屏幕,我想找到分别的x轴值,其中线12交叉..。

所以我期望得到类似于[1, 1.x, 2, 2.x, 3, 4, 4.x, 5, 5.x] on x-axis的结果

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-10 05:07:02

如果这是一条平滑的曲线,您可以使用InterpolatedUnivariateSpline

代码语言:javascript
复制
import numpy as np
from scipy import interpolate

x = np.linspace(0, 20, 100)
y = np.sin(x + 0.1)

y0 = 0.3
spline = interpolate.InterpolatedUnivariateSpline(x, y - y0)

xp = spline.roots()

情节如下:

代码语言:javascript
复制
pl.plot(x, y)
pl.axhline(0.3, color="black", linestyle="dashed")
pl.vlines(xp, 0, 0.3, color="gray", linestyle="dotted")

如果您想要线性内插:

代码语言:javascript
复制
x = np.linspace(0, 20, 20)
y = np.sin(x + 0.1)
y0 = 0.3
y_offset = y - y0
pos = np.where((y_offset[1:] * y_offset[:-1]) <= 0)[0]

x1 = x[pos]
x2 = x[pos+1]
y1 = y[pos]
y2 = y[pos+1]

xp = (y0 - y1) / (y2 - y1) * (x2 - x1) + x1

票数 2
EN

Stack Overflow用户

发布于 2018-02-10 04:37:28

如果将interp1d(x,y)更改为interp1d(y,x),则将x表示为y的函数。

请注意,如果f(x)不是唯一的,则可能会出现意外或未定义的行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48717270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档