Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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 如何分离同一直线上的坐标?_Python_Algorithm_Geometry - Fatal编程技术网

Python 如何分离同一直线上的坐标?

Python 如何分离同一直线上的坐标?,python,algorithm,geometry,Python,Algorithm,Geometry,我有一个坐标列表,绘制时如下所示: 他们的关系并不完美。如何将它们分割成多个列表,其中每个列表包含看起来像在同一水平线上的坐标 以下是示例数据: [(24, 228), (25, 194), (26, 162), (29, 83), (30, 52), (31, 17), (63, 223), (63, 194), (64, 162), (65, 84), (66, 49), (67, 19), (100, 228), (100, 190), (101, 158), (102, 81), (1

我有一个坐标列表,绘制时如下所示:

他们的关系并不完美。如何将它们分割成多个列表,其中每个列表包含看起来像在同一水平线上的坐标

以下是示例数据:

[(24, 228), (25, 194), (26, 162), (29, 83), (30, 52), (31, 17), (63, 223), (63, 194), (64, 162), (65, 84), (66, 49), (67, 19), (100, 228), (100, 190), (101, 158), (102, 81), (102, 54), (102, 20), (137, 227), (137, 195), (137, 163), (137, 86), (137, 52), (137, 22), (172, 23), (172, 57), (172, 87), (173, 163), (173, 195), (173, 227), (206, 24), (206, 58), (207, 84), (208, 159), (208, 191), (209, 223)] 

因为您对水平线感兴趣,所以您只关心每个点的y坐标。我会将y坐标按升序排序,然后通过这个列表将其切割成相邻点之间的间距超过某个阈值的段。剩下的每一段都是同一水平线上的一组点。

这应该可以做到:

data = np.array([(24, 228), (25, 194), (26, 162), (29, 83), (30, 52), (31, 17), (63, 223), (63, 194), (64, 162), (65, 84), (66, 49), (67, 19), (100, 228), (100, 190), (101, 158), (102, 81), (102, 54), (102, 20), (137, 227), (137, 195), (137, 163), (137, 86), (137, 52), (137, 22), (172, 23), (172, 57), (172, 87), (173, 163), (173, 195), (173, 227), (206, 24), (206, 58), (207, 84), (208, 159), (208, 191), (209, 223)])

thresh = 10
groups = []
for point in data:
    x,y = point
    for g in groups:
        if abs(g[0][1] - y) < thresh:
            g.append(point)
            break
    else:
        groups.append([point])
data=np.array([(24228),(25194),(26162),(29,83),(30,52),(31,17),(63223),(63194),(64162),(65,84),(66,49),(67,19),(100228),(100190),(101158),(10281),(10254),(10220),(137,227),(137,195),(137,163),(137,86),(137,52),(137,22),(172,23),(172,57),(172,87),(173163),(173195),(173, 227), (206, 24), (206, 58), (207, 84), (208, 159), (208, 191), (209, 223)])
thresh=10
组=[]
对于点输入数据:
x、 y=点
对于g组:
如果abs(g[0][1]-y)

由您自己来调整…

提供示例数据,我将为您提供一个起点…轴对齐或任意?图像提示垂直线更匹配…请参阅,谢谢您的帮助。