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

时间:2015-05-06 23:10:44

标签: python arrays numpy vectorization

我知道可以通过使用numpy函数numpy.diff()来获取numpy数组的n阶离散差,但有没有办法对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循环?

1 个答案:

答案 0 :(得分:3)

A[i+1]的{​​{1}}将由for i in range(N-1)涵盖,同样的A[1:]同样的迭代意味着A[i]。所以,基本上你可以将输入数组的这两个版本相加,以便在A[:-1]中得到一个矢量化输出,就像这样 -

B