首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python成对点列表,如何沿着直线查找点

Python成对点列表,如何沿着直线查找点
EN

Stack Overflow用户
提问于 2015-12-24 07:57:22
回答 1查看 2K关注 0票数 2

我有一组函数,它们生成成对点的列表,如下所示:

代码语言:javascript
复制
my_list=[((57.5, 3048.0), (62.0, 3050.0)), ((82.0, 1006.0), (93.0, 1021.5)), ((95.0, 1354.0), (86.0, 1336.0)), ((95.0, 1354.0), (89.0, 1327.0))...]

因此,每一对是:

代码语言:javascript
复制
((57.5, 3048.0), (62.0, 3050.0)) Pair 0
((82.0, 1006.0), (93.0, 1021.5)) Pair 1
((95.0, 1354.0), (86.0, 1336.0)) Pair 2
((95.0, 1354.0), (89.0, 1327.0)) Pair 3
((104.0, 2366.0), (109.0, 2350.0)) Pair 4
((104.0, 2370.0), (109.0, 2350.0)) Pair 5
((122.5, 2375.0), (109.0, 2350.0)) Pair 6

等。

这是一个由分析图像生成的X,Y坐标的长列表。我需要找到一种拒绝大部分观点的方法。

任何低于3分的东西,如果没有落在一个类似的线上(不准确,需要一些回旋的空间),就需要被拒绝。

大多数点不是一条线上的簇,或者一条线上只有两个点。有没有一种方法可以在这个列表中运行,并且只在大致相同的线上保存3个或更多点的集合?

这是一张图片来展示我想要的东西。这幅图像显示的是由这些功能发现的微弱的移动小行星,所有的噪音也被发现。你可以看到小行星的3+点大致在同一条线上,而噪音却是随机的。我试着放弃在同一条线上只有两点的观点。

有很多要求,但很重要!

在执行完答案1之后

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-24 09:22:08

你可以找到一个方程,一个点到两个点之间的线的距离。(line)。

代码语言:javascript
复制
def distance(point, segment):
    """Distance from a point to a line formed by a segment"""
    ...

然后循环遍历所有的段并计算出从每个点到的距离。你需要一个“足够近”的门槛。然后,您可以列出接近一条线的所有点的列表。就像这样。

代码语言:javascript
复制
ON_LINE_THRESHOLD = 1.5

for segment in my_list:
    close_points = []
    for point1, point2 in my_list:
        if distance(point1, segment) < ON_LINE_THRESHOLD:
            close_points.append(point1)
        if distance(point2, segment) < ON_LINE_THRESHOLD:
            close_points.append(point2)
    if len(close_points) >=3:
        # Close points will always be at least two as it includes the end points.
        do something!

然后,你如何处理一条线上的点列表取决于你自己。

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

https://stackoverflow.com/questions/34449293

复制
相关文章

相似问题

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