Python 我有一组坐标,我需要知道哪些是线性的

Python 我有一组坐标,我需要知道哪些是线性的,python,coordinates,Python,Coordinates,我将以下坐标分为两个列表: x = [1, 2, 3, 4, 5, 5] y = [1, 2, 3, 4, 4, 5] 我想做一个函数,返回: 1 2 3 4 5 1 2 3 4 5 我尝试的每一个代码都不会跳过x=5 y=4,帮助。您可以使用此功能删除重复的代码: deDupe = lambda x: list(dict.fromkeys(x)) 根据我相信你的提问和@Mark Meyer的建议,这里有一种方法,只有在保存坐标对相同时才能进行保存 [(x,y) for x,y in zi

我将以下坐标分为两个列表:

x = [1, 2, 3, 4, 5, 5]
y = [1, 2, 3, 4, 4, 5]
我想做一个函数,返回:

1 2 3 4 5
1 2 3 4 5

我尝试的每一个代码都不会跳过x=5 y=4,帮助。

您可以使用此功能删除重复的代码:

deDupe = lambda x: list(dict.fromkeys(x))
根据我相信你的提问和@Mark Meyer的建议,这里有一种方法,只有在保存坐标对相同时才能进行保存

[(x,y) for x,y in zip(x,y) if x == y]

您可以使用此功能删除重复项:

deDupe = lambda x: list(dict.fromkeys(x))
根据我相信你的提问和@Mark Meyer的建议,这里有一种方法,只有在保存坐标对相同时才能进行保存

[(x,y) for x,y in zip(x,y) if x == y]

我还没有将其发布到pylib,如果您打算以我的方式执行此操作,请按照以下步骤操作:

  • 打开终端,将终端指向要保存文件的特定文件夹
  • 在终端中运行以下命令
  • git克隆https://github.com/Weilory/python-regression

  • 打开
    python regression
    文件夹,将
    regression
    文件夹复制并粘贴到基本目录

  • 在包含
    regression
    文件夹的基本目录中,创建一个
    test.py

  • 粘贴以下代码:

  • 来自回归。回归导入线性回归
    x=[1,2,3,4,5,5]
    y=[1,2,3,4,4,5]
    表达式=线性回归(x=x,y=y)
    打印(表达式.写入)
    #y=1.0*x+0.0
    我的公式=表达式.formula
    res_x=[]
    res_y=[]
    对于枚举(x)中的i,d:
    如果my_公式(d)=y[i]:
    res_x.追加(d)
    res_y.append(y[i])
    打印(分辨率x)
    打印(分辨率)
    # [1, 2, 3, 4, 5]
    # [1, 2, 3, 4, 5]
    
  • 在终端
    python test.py
    中运行
    test.py

  • 确保在您的计算机上全局安装了numpy。

    我还没有将其发布到pylib,如果您要以我的方式执行此操作,请按照以下步骤操作:

  • 打开终端,将终端指向要保存文件的特定文件夹
  • 在终端中运行以下命令
  • git克隆https://github.com/Weilory/python-regression

  • 打开
    python regression
    文件夹,将
    regression
    文件夹复制并粘贴到基本目录

  • 在包含
    regression
    文件夹的基本目录中,创建一个
    test.py

  • 粘贴以下代码:

  • 来自回归。回归导入线性回归
    x=[1,2,3,4,5,5]
    y=[1,2,3,4,4,5]
    表达式=线性回归(x=x,y=y)
    打印(表达式.写入)
    #y=1.0*x+0.0
    我的公式=表达式.formula
    res_x=[]
    res_y=[]
    对于枚举(x)中的i,d:
    如果my_公式(d)=y[i]:
    res_x.追加(d)
    res_y.append(y[i])
    打印(分辨率x)
    打印(分辨率)
    # [1, 2, 3, 4, 5]
    # [1, 2, 3, 4, 5]
    
  • 在终端
    python test.py
    中运行
    test.py

  • 确保在您的计算机上全局安装了numpy。

    这个问题的场景听起来像是我们有一组点,其中一个未知的点子集是共线的,我们希望识别该共线子集

    解决这个问题的一个很好的算法是。对于直线拟合,RANSAC类似于线性回归,但对异常值具有鲁棒性

    使用RANSAC安装管路:

  • 从原始数据中随机选择两个点
  • 把一条线穿过它们
  • 然后,对于所有其他数据点,比较它们与直线的距离。如果它们合得来,就把它们看作是“共识集合”的一部分。
  • 重复步骤1-3数次,并接受共识集包含最多点的行
  • (可选)通过线性回归将直线重新拟合到共识集中的所有点

  • scikit learn Python库有一个RANSAC的实现,请参见。

    这个问题的场景听起来像是我们有一组点,其中一个未知的点子集是共线的,我们想要识别该共线子集

    解决这个问题的一个很好的算法是。对于直线拟合,RANSAC类似于线性回归,但对异常值具有鲁棒性

    使用RANSAC安装管路:

  • 从原始数据中随机选择两个点
  • 把一条线穿过它们
  • 然后,对于所有其他数据点,比较它们与直线的距离。如果它们合得来,就把它们看作是“共识集合”的一部分。
  • 重复步骤1-3数次,并接受共识集包含最多点的行
  • (可选)通过线性回归将直线重新拟合到共识集中的所有点

  • scikit learn Python库有一个RANSAC的实现,请参阅。

    这是否回答了您的问题?这回答了你的问题吗?我想它在某些情况下可能会很好地工作,但我需要它返回5,x[5]中的一个,所以你想返回列表中出现两次的数字?这有点复杂,但我只想得到在图表中形成直线的数字,如果我将例如6 x和7加在Y上,它不会返回它们,因为它们不会在笛卡尔图中画一条直线。@Sumito您只想要
    x==y
    的值吗?说你只想要一行上的那些是未指定的——在
    (1,1)
    (5,4)
    之间有一条直线,你怎么知道不删除所有其他的而不是这两个呢?你可以很容易地得到多条直线的其他场景。我想它在某些场景中可能会很好地工作,但我需要它返回5,x[5]中的那个,所以你想返回列表中出现两次的数字?这有点复杂,但我只想得到在图中构成直线的数字,例如,如果我将一个6 X和一个7添加到Y,它将不会返回它们,因为它们不会在笛卡尔图中形成一条直线。@Sumito您只需要
    X==Y
    中的值吗?说你只想要一条直线上的那些是不明确的——有一条直线