在python中实现数据日志的派生

2024-05-16 05:16:40 发布

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

我们有两个数据列表(向量)y和{},我们可以想象x是时间步(0,1,2,…)和{}一些系统属性,每个值都是{} 我对计算ylog的导数感兴趣,问题是如何在Python中执行这样的计算? 我们可以从使用numpy来计算日志:logy = np.log(y)和{}那么我们用什么方法来区分dlog(y)/dlog(x)?在

想到的一个选项是按以下方式使用np.gradient()

deriv = np.gradient(logy,np.gradient(logx)).

  • 这样的计算有效吗?在
  • 在不使用np.gradient的情况下,是否有更好的(或等效的)替代方案?在

Tags: 数据numpylog列表属性系统np时间
1条回答
网友
1楼 · 发布于 2024-05-16 05:16:40

在查看了np.gradienthere的源代码并环顾四周,您可以看到它在numpy版本1.14中发生了变化,因此文档发生了变化。在

我有1.11版本。所以我认为梯度现在被定义为def gradient(y, x) -> dy/dx如果isinstance(x, np.ndarray),但在版本1.11中没有。我认为,做np.gradient(y, np.array(...))实际上是一种未定义的行为!在

但是,np.gradient(y) / np.gradient(x)适用于所有numpy版本。用那个!在

证明:

import numpy as np
import matplotlib.pyplot as plt
x = np.sort(np.random.random(10000)) * 2 * np.pi
y = np.sin(x)
dy_dx = np.gradient(y) / np.gradient(x)
plt.plot(x, dy_dx)
plt.show()

看起来很像一个cos

enter image description here

相关问题 更多 >