Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 2.7 在由点列表生成的python图上查找点的交点_Python 2.7_Numpy_Matplotlib - Fatal编程技术网

Python 2.7 在由点列表生成的python图上查找点的交点

Python 2.7 在由点列表生成的python图上查找点的交点,python-2.7,numpy,matplotlib,Python 2.7,Numpy,Matplotlib,我试图找到由点列表生成的两条直线之间的交点 我有两个点列表,然后用 import matplotlib.pyplot as plt import numpy as np a = arrayOfPoints1 plt.plot(*zip(*a)) b = arrayOfPoints2 plt.plot(*zip(*b)) plt.show() 现在我已经生成了一个类似这样的图 我的目标是找到这两个图形相交的所有点,即蓝色和绿色线的交点。乍一看,这些点似乎只是阵列a和b中的点,但在生成点之间的直

我试图找到由点列表生成的两条直线之间的交点

我有两个点列表,然后用

import matplotlib.pyplot as plt
import numpy as np

a = arrayOfPoints1
plt.plot(*zip(*a))
b = arrayOfPoints2
plt.plot(*zip(*b))
plt.show()
现在我已经生成了一个类似这样的图

我的目标是找到这两个图形相交的所有点,即蓝色和绿色线的交点。乍一看,这些点似乎只是阵列a和b中的点,但在生成点之间的直线时,可能会出现一些阵列中没有的交点

我如何找到所有的十字路口


注意:我正在寻找一种在Python2.7中工作的解决方案,如果两个图使用相同的X轴值,在同一数组中计算不同的函数,您可以通过直接计算每对连续线段的交点手动完成。如果段是平行的,则必须考虑几个情况。交叉点可以用平面中的直线方程来计算。您可以在一般情况下添加此方法,方法是取X轴值的并集并计算所需的值

一个更简单但可能效率更低的方法是依赖shapely库,如果您必须对其进行数百万次计算的话。如果路径不使用相同的X轴值,此方法也有效。下面是一个简单的例子

from shapely.geometry import LineString

l1 = LineString([(0,0), (10,10)])
l2 = LineString([(1,0), (5,10), (10,0)])

intersection = l1.intersection(l2)
intersect_points = [list(p.coords)[0] for p in intersection]
print intersect_points
这会回来的

[(1.6666666666666667, 1.6666666666666665), (6.666666666666667, 6.666666666666667)]

减去两个数组的值,然后找到差数组的零


您可以使用scipy.signal.argrelmin来查找差分数组绝对值的局部极小值。

请向我们展示您迄今为止尝试的代码。您能否解释一下直接计算每对连续线段的交点的意思?我对python中的图形和数学库相当陌生,所以我不确定我是否完全理解了您的建议。您需要为每对连续点执行此操作。不过,我强烈建议您使用shapely解决方案。可靠且简单。