2024-05-16 05:16:40 发布
网友
我们有两个数据列表(向量)y和{},我们可以想象x是时间步(0,1,2,…)和{}一些系统属性,每个值都是{} 我对计算y的log的导数感兴趣,问题是如何在Python中执行这样的计算? 我们可以从使用numpy来计算日志:logy = np.log(y)和{}那么我们用什么方法来区分dlog(y)/dlog(x)?在
y
x
log
numpy
logy = np.log(y)
想到的一个选项是按以下方式使用np.gradient():
np.gradient()
deriv = np.gradient(logy,np.gradient(logx)).
np.gradient
在查看了np.gradienthere的源代码并环顾四周,您可以看到它在numpy版本1.14中发生了变化,因此文档发生了变化。在
我有1.11版本。所以我认为梯度现在被定义为def gradient(y, x) -> dy/dx如果isinstance(x, np.ndarray),但在版本1.11中没有。我认为,做np.gradient(y, np.array(...))实际上是一种未定义的行为!在
def gradient(y, x) -> dy/dx
isinstance(x, np.ndarray)
1.11
np.gradient(y, np.array(...))
但是,np.gradient(y) / np.gradient(x)适用于所有numpy版本。用那个!在
np.gradient(y) / np.gradient(x)
证明:
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波
cos
在查看了
np.gradient
here的源代码并环顾四周,您可以看到它在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
版本。用那个!在证明:
看起来很像一个
cos
波相关问题 更多 >
编程相关推荐