我很难理解np.diff的行为当n>1
文档给出了以下示例:
x = np.array([1, 2, 4, 7, 0])
np.diff(x)
array([ 1, 2, 3, -7])
np.diff(x, n=2)
array([ 1, 1, -10])从第一个例子看,我们用前一个数字减去每个数字(xi+1-xi),所有结果都是有意义的。
第二次调用函数时,使用n=2,我们似乎正在执行xi+2-xi+1-xi,结果数组中的第一个数字(1和1)是有意义的,但我很惊讶最后一个数字不是-11 (0-7-4)而是-10。
在文档中我找到了这个解释
第一个差分是由outi = ai+1 - ai沿给定的轴给出的,更高的差是用递归差分法计算的。
我无法理解这个“递归”,所以如果有人有一个更清楚的解释,我会很高兴的!
发布于 2022-03-29 13:46:51
np.diff(x, n=2)与np.diff(np.diff(x))相同(在本例中,这就是“递归”的意思)。
发布于 2022-03-29 13:45:27
在本例中,“递归”仅仅意味着它要多次执行相同的操作,每次都是在上一步产生的数组上执行。所以:
x = np.array([1, 2, 4, 7, 0])
output = np.diff(x)产生
output = [2-1, 4-2, 7-4, 0-7] = [1, 2, 3, -7]如果使用n=2,它只需执行两次相同的操作:
output = np.diff(x, n=2)
# first step, you won't see this result
output = [2-1, 4-2, 7-4, 0-7] = [1, 2, 3, -7]
# and then again (this will be your actual output)
output = [2-1, 3-2, -7-3] = [1, 1, -10]https://stackoverflow.com/questions/71663080
复制相似问题