Python 如何计算元素x[i&x2B;1]和x[i-1]之间的差值?

Python 如何计算元素x[i&x2B;1]和x[i-1]之间的差值?,python,numpy,Python,Numpy,给定一个数组A,大小为n,我想要一个函数,它返回一个数组R,大小为n-2,使得R[I]=A[I+1]-A[I-1] 我试图检查numpy.diff的选项,但显然它只计算连续元素之间的差异,即A[I+1]-A[I]我将编写一个小函数来实现这一点: def差异(A): R=[] 对于范围(1,len(A)-1)内的i: R.append(A[i+1]-A[i-1]) 返回R 或使用列表理解: R=[A[i+1]-A[i-1]表示范围(1,len(A)-1)内的i 您可以直接从最后n-2个值中减去前

给定一个数组
A
,大小为
n
,我想要一个函数,它返回一个数组
R
,大小为
n-2
,使得
R[I]=A[I+1]-A[I-1]


我试图检查
numpy.diff
的选项,但显然它只计算连续元素之间的差异,即
A[I+1]-A[I]
我将编写一个小函数来实现这一点:

def差异(A):
R=[]
对于范围(1,len(A)-1)内的i:
R.append(A[i+1]-A[i-1])
返回R
或使用列表理解:

R=[A[i+1]-A[i-1]表示范围(1,len(A)-1)内的i

您可以直接从最后n-2个值中减去前n-2个值的切片,反之亦然:

>r=numpy.array([1,2,3,4,5,6])
>>>r[2:],r[:-2]
(数组([3,4,5,6]),数组([1,2,3,4]))
>>>r[:-2]-r[2:][r[i]=r[i-1]-r[i+1]
数组([-2,-2,-2,-2])
>>>r[2:]-r[:-2]#r[i]=r[i+1]-r[i-1]
数组([2,2,2,2])
切片和元素相减都由
numpy执行,因此开销最小。

我会选择:

numpy.diff(r[1:])+numpy.diff(r[:-1])

这不是一个循环吗?