如何取 numpy 数组的 n 阶离散和(和 numpy.diff 等价)

How to take n-th order discrete sum of numpy array (sum equivalent of numpy.diff)

我知道可以通过使用 numpy 函数 numpy.diff() 来获取 numpy 数组的 n 阶离散差异 numpy.diff(),但是有没有办法对 n 阶进行同样的操作离散和?

假设我们有一个 numpy 数组 A = np.arange(10)。一阶离散和的预期结果为:

array([  1.,   3.,   5.,   7.,   9.,  11.,  13.,  15.,  17.]) 

我可以从中得到:

N = A.shape[0]
B = np.zeros(N-1)

for i in range(N-1):
    B[i] = A[i+1] + A[i]

但是有没有一个函数可以避免使用 for 循环?

A[i+1] 对于 for i in range(N-1) 将被 A[1:] 覆盖,同样地 A[i] 对于相同的迭代意味着 A[:-1]。所以,基本上你可以将这两个版本的输入数组相加,得到 B 中的矢量化输出,就像这样 -

B = A[:-1] + A[1:]