如何取 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:]
我知道可以通过使用 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:]