如何在python中不使用numpy从直线方程中提取系数?

2024-06-16 12:55:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有2个红色和蓝色的(x,y)元组形式的列表和一个ax+by+c形式的直线方程列表。我的要求是从每个直线方程中提取系数,并根据这2组点的绘图来确定这些点是否在直线的两侧清楚地分开。 挑战是我不能使用numpy。在

我的方法是使用pyplot压缩2个列表中的红点和蓝点。现在我尝试使用正则表达式提取系数,如下所示。在

lines = ["1x+1y+0","1x-1y+0","1x+0y-3","0x+1y-0.5"]

for i in lines:
    z = re.match('(\d+)?(x)?\+(\d+)?(y)?\+(\d)?', i)

但是,我不能使用'z',因为它是'NoneType'。即使我能以某种方式使用它,我也不知道如何使用截距和斜率来确定红点和蓝点在直线的两边。在

我们非常感谢您的任何建议。在

尝试使用matplotlib绘制点

^{pr2}$

Tags: numpy绘图列表byax形式直线蓝色
2条回答

我相信你想用的是findall。在

您可以从[\d\.\-\+]+的简单模式开始。这将捕获所有系数,前提是系数的格式正确(例如,数字中没有双句点)。在

>>> lines = ["1x+1y+0", "1x-1y+0", "1x+0y-3", "0x+1y-0.5"]
>>> for i in lines:
...     z = re.findall(r'[\d\.\-\+]+', i)
...     print(z)
... 
['1', '+1', '+0']
['1', '-1', '+0']
['1', '+0', '-3']
['0', '+1', '-0.5']

显然,您必须对得到的字符串列表进行一些额外的解析,以将它们转换为数字,但这将是一个练习:)

import re
str = "112x-12y+0"
res = re.findall(r'[0-9\-\+]+', str)
print(res)

输出: ['112','-12','+0']

相关问题 更多 >