如何计算元素x[i+1]和x[i-1]之间的差异?
给定一个A大小为 的数组,n我想要一个函数,该函数返回一个R大小n-2为R[i] = A[i+1] - A[i-1].
我试图检查选项,numpy.diff但显然它只计算连续元素之间的差异,即A[i+1] - A[i].
回答
您可以直接从最后 n-2 个值中减去前 n-2 个值的切片,反之亦然:
>>> r = numpy.array([1, 2, 3, 4, 5, 6])
>>> r[2:], r[:-2]
(array([3, 4, 5, 6]), array([1, 2, 3, 4]))
>>> r[:-2] - r[2:] # r[i] = r[i-1] - r[i+1]
array([-2, -2, -2, -2])
>>> r[2:] - r[:-2] # r[i] = r[i+1] - r[i-1]
array([2, 2, 2, 2])
切片和逐元素减法都是由执行的numpy,因此开销最小。