我有一个列表和一个值,如下所示:
y = [5, 6, 7, 3, 8, 10, 5, 2, 8, 15]
y0 = 9
如果我画图,那么我就会低于图
为了绘图,我使用下面的代码:
a = []
for i in range(len(y)):
a.append(y0)
x = []
for i in range(len(y)):
x.append(i)
l5 = list(zip(y, x))
print(l5)
l6 = list(zip(a, x))
print(l6)
plt.plot(x, y, '-')
plt.plot(x, a, '-')
plt.show()
从图中我可以看到有 3 个交叉点。如何获取交点的索引(x 轴的 x 值)?例如,在上面的图中,类似 (4.2, 5.3, 8.1)。
最佳答案
下面的内容应该可以解决问题。它还处理 x 的分数。
y = [
5, 6, 7, 3, 8, 10, 5, 2, 8, 15,
9, 10, 9, 9, 8, 9 # additional corner cases
]
y0 = 9
intersecting_x = [
float(x + (y0 - y[x]) / (y[x+1] - y[x]) if y[x+1] != y[x] else x + 1)
for x in range(len(y)-1)
if y[x+1] == y0 or y[x] < y0 < y[x+1] or y[x] > y0 > y[x+1]
]
print(intersecting_x)
# [4.5, 5.2, 8.142857142857142, 10.0, 12.0, 13.0, 15.0]
关于python-3.x - 查找从python中的点列表创建的两条线的交点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59374991/