python-3.x - 查找从python中的点列表创建的两条线的交点

标签 python-3.x

我有一个列表和一个值,如下所示:

y = [5, 6, 7, 3, 8, 10, 5, 2, 8, 15]
y0 = 9

如果我画图,那么我就会低于图

enter image description here

为了绘图,我使用下面的代码:

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/

相关文章:

python - 创建一个用于在 Python3 中运行二进制程序的最小沙箱

django - 如何使用 get_blob_to_stream 从 azure-storage 下载数据

python - 从 SOAP 响应中解析多个值

python - 从 Plotly 中的 DataFrame 列添加多个文本标签

python - 在Python OpenCV中将字符串渲染为库属性

python - 如何递归地编写嵌套 for 循环?

python-3.x - 如何使用 Scrapy (Python3) 进行广度优先搜索抓取?

python - 如何使用Python将Excel文件的所有行和列合并到另一个Excel文件的单个单元格中?

javascript - XMLHttpRequest 无法向 Flask 服务器发出请求

python - Pandas :按 Pandas 0.23.4 中两列的组合分组