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

pbr*_*ach 5 python arrays numpy vectorization

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

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

array([  1.,   3.,   5.,   7.,   9.,  11.,  13.,  15.,  17.]) 
Run Code Online (Sandbox Code Playgroud)

我可以从这样做中得到:

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

for i in range(N-1):
    B[i] = A[i+1] + A[i]
Run Code Online (Sandbox Code Playgroud)

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

Div*_*kar 5

A[i+1]forfor i in range(N-1)将被相同的迭代 mean覆盖A[1:]并类似地覆盖。所以,基本上你可以将这两个版本的输入数组相加以获得一个向量化的输出,就像这样 -A[i]A[:-1]B

B = A[:-1] + A[1:]
Run Code Online (Sandbox Code Playgroud)