我们有x
和y
值,我正在记录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
给出x,
的值作为t,
的函数的人,想要进行exctract基本上是权力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]
{{1}}
python中有其他(更适合的)方法来获取这样的数值导数吗?
答案 0 :(得分:1)
感谢评论中的讨论,np.gradient
的问题已通过将numpy软件包从版本1.12.1
更新为1.13.3.
来解决。如果您还获得了此更新,则此更新特别相关使用ValueError
时"distances must be scalars"
gradient.
因此,为了提取幂律的顺序,计算np.gradient(logy,logx)
仍然是实现它的有效选择。