当前位置: 首页 > 知识库问答 >
问题:

如何找到y==0的曲线(作为np.array)的精确交点?

鲍驰
2023-03-14

如何从Python中的绘图中获得y轴上的精确值?我有两个数组vertical\u datagradient(temperature\u data),我将它们绘制为:

plt.plot(gradient(temperature_data),vertical_data)
plt.show()

图中所示为:

我需要零值,但它不完全是零,它是一个浮动。

共有1个答案

劳烨
2023-03-14

我没有找到一个很好的答案,如何找到一个Numpy数组的根或零的问题,所以这里有一个解决方案,使用简单的线性插值。

import numpy as np
N = 750
x = .4+np.sort(np.random.rand(N))*3.5
y = (x-4)*np.cos(x*9.)*np.cos(x*6+0.05)+0.1


def find_roots(x,y):
    s = np.abs(np.diff(np.sign(y))).astype(bool)
    return x[:-1][s] + np.diff(x)[s]/(np.abs(y[1:][s]/y[:-1][s])+1)

z = find_roots(x,y)

import matplotlib.pyplot as plt

plt.plot(x,y)
plt.plot(z, np.zeros(len(z)), marker="o", ls="", ms=4)

plt.show()

当然你可以反转xy的角色来得到

plt.plot(y,x)
plt.plot(np.zeros(len(z)),z, marker="o", ls="", ms=4)
y0 = 1.4
z = find_roots(x,y-y0)
# ...
plt.plot(z, np.zeros(len(z))+y0)

人们还询问如何获得两条曲线之间的交点。在这种情况下,它又是关于找出两者之间差异的根源,例如。

x = .4 + np.sort(np.random.rand(N)) * 3.5
y1 = (x - 4) * np.cos(x * 9.) * np.cos(x * 6 + 0.05) + 0.1
y2 = (x - 2) * np.cos(x * 8.) * np.cos(x * 5 + 0.03) + 0.3

z = find_roots(x,y2-y1)

plt.plot(x,y1)
plt.plot(x,y2, color="C2")
plt.plot(z, np.interp(z, x, y1), marker="o", ls="", ms=4, color="C1")
 类似资料:
  • 我将用一个例子来问这个问题。假设我有一个这样的项目目录。 首先我想知道我是否把作曲家放在。项目目录中的json文件是否正确,以便在供应商目录中安装库?第二,假设我有以下几行,作曲家。json 那么作曲家将在哪里配置自动加载来查找关于项目根的类samplevendor\包\sampleclass?我问这个问题是在看了symfony2composer.locked文件中的以下几行之后: 更新:我在自动

  • 在这里我使用的是基于一维cnn的模型,我不理解模型的学习曲线,因为测试/验证精度曲线是波动的,而总体模型性能大约是70%,相反验证损失只是饱和和波动?我应该如何解释我的结果,我应该考虑什么变化? 我用过亚当优化器。

  • 问题内容: 我有一个不同的numpy数组的numpy数组,我想对数组进行深层复制。我发现以下内容: d是执行此操作的最佳方法吗?我错过了深层复制功能吗?与大小不同的数组中的每个元素进行交互的最佳方法是什么? 问题答案: 请随时在此处阅读更多内容。 哦,这是最简单的测试用例:

  • 问题内容: 对于三次贝塞尔曲线,通常具有四个点a,b,c和d, 对于给定的值t 如何最优雅地找到 切线 ? 问题答案: 这是经过完全测试的代码,可以复制和粘贴: 它沿着曲线绘制 近似 点, 并 绘制切线。 找到要点 找到切线 有 两个版本 的下面提供: 完美地工作。 完全相同,但以扩展,清晰,解释性的方式编写。它使算法更容易理解。 使用这两个例程之一:结果相同。 在这两种情况下,都可用于查找切线。

  • 问题内容: 目前,我正在更新我的x.509证书库以支持ECC。实现的大多数构建器都使用publicKey并从密钥派生算法等。在RSA中,这很简单,您可以检查密钥的算法,然后可以验证位长。但是,对于ECC,密钥是基于曲线的,曲线名称(当然)需要在证书中指定(作为OID)。 我现在正在研究的问题是找到一种方法来从java.security.interfaces.ECPublicKey或org.boun

  • 我知道如何描述等厚度曲线(用Bezier或类似的模型)。 变厚度曲线有什么常见的模型吗? 我在想象一些类似的事情,就像在贝塞尔一样。例如,每个节点可以包含厚度值及其权重,因此渲染器可以沿曲线插值厚度。 在Bezier中,向量越长,比如说AB,那么沿着AB方向的曲线越长。在上面的图片上,我们有很长时间的追随者。 因此,我希望THIKNY与控制节点B和C同步,如果AB和CD长,那么ThinkNY应该跟

  • 我有一位作曲家。json结构如下: 我有文件在应用程序/数据库/种子(这里的文件可以动态创建,所以解决方案与类地图:[应用程序/数据库/种子]不工作在这里bcs我必须始终转储-自动加载前播种: 用户表种子。php 数据库播种机。php 结构如下: 在php编写器之后。phar安装和php编写器。phar dump autoload我不能在应用程序中使用,例如在索引中。php 因为我收到错误:类Da

  • 还在纠结递归。我有一个代码,它应该让我得到最少的操作,以便从x到y。只有乘以2或加+1,例如从7到12...它的5次操作,因为你需要+1次。我的代码对我来说没有正确的工作,我无法找出我缺少了什么来保证它是正确的。