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



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

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))
x = [1, 2, 3, 4, 5, 5]
y = [1, 2, 3, 4, 4, 5]
deDupe = lambda x: list(dict.fromkeys(x))
print(deDupe(x))
print(deDupe(y))
>>> [1, 2, 3, 4, 5]
>>> [1, 2, 3, 4, 5]

对于我相信你问了什么,@Mark Meyer建议了什么,这里有一种方法,只有当保存坐标对是相同的时,才能创建保存坐标对

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

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

这个问题的一个优秀算法是随机样本一致性或RANSAC。对于线性拟合,RANSAC类似于线性回归,但对异常值具有鲁棒性。

RANSAC:的线路拟合

  1. 从原始数据中随机选择两个点
  2. 穿过它们安装一条线
  3. 然后,对于所有其他数据点,比较它们离直线的距离。如果它们很合身,就认为它们是";共识集">
  4. 重复步骤1-3几次,并接受共识集包含最多点的线
  5. (可选(通过线性回归将直线重新拟合到一致集合中的所有点

scikit学习Python库具有RANSAC的实现,参见";使用RANSAC的鲁棒线性模型估计";。

我还没有把它发布到pylib,如果你要用我的方式来做,请遵循以下过程:

  1. 安装git
  2. 打开终端,将终端指向要保存文件的特定文件夹
  3. 在终端中运行跟随

git clone https://github.com/Weilory/python-regression

  1. 打开python-regression文件夹,将regression文件夹复制并粘贴到基本级别目录中。

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

  3. 粘贴以下代码:

from regression.regress import linear_regression
x = [1, 2, 3, 4, 5, 5]
y = [1, 2, 3, 4, 4, 5]
expression = linear_regression(x=x, y=y)
print(expression.write)
# y = 1.0 * x + 0.0
my_formula = expression.formula
res_x = []
res_y = []
for i, d in enumerate(x):
if my_formula(d) == y[i]:
res_x.append(d)
res_y.append(y[i])
print(res_x)
print(res_y)
# [1, 2, 3, 4, 5]
# [1, 2, 3, 4, 5]
  1. 在终端python test.py中运行test.py

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

最新更新