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

Implementing derivatives of logs of data in python

我们有两个数据列表(向量),yx,我们可以想象 x 是时间步长 (0,1,2,...) 和y 某些系统 属性 计算了 x. 的每个值 我有兴趣计算 ylog 相对于 x,log 的导数,问题是如何在 Python 中执行此类计算? 我们可以从使用 numpy 开始计算日志: logy = np.log(y)logx = np.log(x). 那么我们使用什么方法来区分 dlog(y)/dlog(x)?

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

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

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

我有1.11版。所以我认为渐变被定义为 def gradient(y, x) -> dy/dx if 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