【发布时间】:2020-06-10 03:52:30
【问题描述】:
我想使用 numpy 在 python 中获得两条线的交点。我写了一段代码,但我无法完成代码。我有一条由 numpy 读取并由 matplotlib 绘制的 1000 点曲线。另外,我绘制了 y=0 线,目前,我想知道第一条曲线与 y = 0 线的交点数。如下图所示
代码如下:
import matplotlib.pyplot as plt
import numpy as np
#ll = np.linspace(min(x),max(x),1696)
with open('file1.txt', 'r') as f:
lines = f.readlines()
x = [float(line.split()[0]) for line in lines]
y = [float(line.split()[1]) for line in lines]
a = np.array(y)
b = np.where (y==0)
print(b)
我们将不胜感激。
【问题讨论】:
-
据我了解,这个问题不是很简单。您所做的基本上不是检查文件中的 y 坐标是否为零,而您想要的是由点产生的曲线的交点。一种方法是找到曲线方程,这是一个机器学习曲线拟合问题。第二种方法可以通过假设两个连续点之间的直线来近似解,并查看该直线是否与 y=0 相交。
-
@talos1904 正如我告诉你的那样,问题是“如何找到 y=0 与我没有直线方程的曲线的点数,所以不可能使用这种方式. 我们正在处理 2 个 numpy 数组 1st:当前曲线和 2nd:我们产生的线。现在,
np.Where应该可以工作,但不能。另外,另一种方法是做一个看起来不太有用的数学。 -
@BehzadJamali
b = np.where(a==0)一无所获。我的意思是结果什么都没有。不仅 a==0,即使更改为 a ==1 或任何其他值,也什么都不是。 -
这取决于
rtol值。尝试将其增加到0.2,看看是否有任何结果 -
将
b = np.where(y==0)更改为b = np.isclose(a, b, rtol=0.01)。请注意,您不能使用 == 检查两个浮点数是否相等!
标签: python numpy matplotlib math