获取python元素的连续比率

获取python元素的连续比率,python,numpy,Python,Numpy,有没有一种简单的方法可以得到numpy数组中连续元素的比率 基本上类似于numpy.diff(x)的东西 如果x=[1,2,10100…] 我想要[0.5,0.2,0.1…] ie[x1/x2,x2/x3,x3/x4] 我知道通过移位和分割可以很容易地做到这一点,但与numpy相比,它似乎很笨拙。使用numpy时,diff(x): In [6]: x Out[6]: array([ 1., 2., 10., 100., 150., 75.]) In [7]: x[:-1]

有没有一种简单的方法可以得到numpy数组中连续元素的比率

基本上类似于numpy.diff(x)的东西

如果x=[1,2,10100…]

我想要[0.5,0.2,0.1…] ie[x1/x2,x2/x3,x3/x4]

我知道通过移位和分割可以很容易地做到这一点,但与numpy相比,它似乎很笨拙。使用numpy时,diff(x)

In [6]: x
Out[6]: array([   1.,    2.,   10.,  100.,  150.,   75.])

In [7]: x[:-1]/x[1:]
Out[7]: array([ 0.5       ,  0.2       ,  0.1       ,  0.66666667,  2.        ])

这可能就是你说的“我可以通过移位和除法很容易做到这一点”的意思,但我看不出有什么笨拙的地方。

我甚至不想发表这篇文章,但对于
x=[6,2,4,10]

np.exp(-np.diff(np.log(x)))

返回
数组([3,0.5,0.4])

除了切片和除法之外,你不会得到更好的结果。实际上,你的语法x[:-1]/x[1:]一点也不笨拙!非常优雅,一条有效的单尾班轮。需要思考才能理解你在做什么,聪明的想法@WarrenWeckesser更直观,但这绝对是学习的好方法,因为它不需要任何改变就能达到效果。
np.exp(-np.diff(np.log(x)))