python 中对数图的导数

Derivative of log plot in python

我们有 xy 值,我正在记录他们的日志,logx = np.log10(x)logy = np.log10(y)。我正在尝试计算 logy w.r.t logx 的导数,所以 dlogy/dlogx。我曾经使用 numpy 梯度成功地做到了这一点,更准确地说

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

但由于某些奇怪的原因,它似乎不再起作用并产生错误:"Traceback (most recent call last): File "derivlog.py", line 79, in <module> grady = np.gradient(logy,np.gradient(logx)) File "/usr/lib/python2.7/dist-packages/numpy/lib/function_base.py", line 1598, in gradient raise ValueError("distances must be scalars") ValueError: distances must be scalars"

上下文: 当尝试检测幂律时,y ~ x^t, 给定 y 的值作为 [=19= 的函数] 一个人想要从本质上提取 t, 的幂,所以我们取对数给出 log y ~ t*log x 然后取导数以提取 t.

下面是重现问题的最小示例:x=[ 3. 4. 5. 6. 7. 8. 9. 10. 11.]

y = [ 1.05654 1.44989 1.7939 2.19024 2.62387 3.01583 3.32106 3.51618 3.68153]

在 python 中是否有其他(更合适的)方法来获取此类数值导数?

感谢评论中的讨论,np.gradient 的问题已通过将 numpy 包从版本 1.12.1 更新到 1.13.3. 解决,如果您也是使用 gradient. 时得到 ValueError "distances must be scalars" 因此,为了提取幂律的顺序,计算 np.gradient(logy,logx) 仍然是一个有效的选择。