numpy.diff产生意外结果

时间:2020-07-04 20:12:05

标签: python numpy multidimensional-array difference

我对numpy.diff函数有一个奇怪的问题:当我将其应用于ndarray时,结果没有意义。有人可以帮忙吗?预先感谢。

In [51]: y[0:20] 
Out[51]: array([ -1.74298015,   0.48808889,  3.55711794,   1.60425756,
        -2.16230544,  -2.72043361,  -7.74136894,  -8.29849524,
       -12.89580717,  -6.89705648,  -6.20016809,  -6.26981107,
        -4.94272368,  -8.28289977, -11.47886103, -18.14762649,
       -12.16312638,  -1.5986488 ,  -2.43279408,  -3.47560131])

In [52]: np.diff(y, 10)[0:10] 
Out[52]: array([ -955.00831582, 1226.29625361, -1419.52874856,  1391.47262492,
        -998.29181321,   363.19533892,   209.27652021,  -575.33795591,
         812.13066033,  -883.15925885])

In [53]: type(y) 
Out[53]: numpy.ndarray

1 个答案:

答案 0 :(得分:0)

这里有些猜谜游戏,但是diff对第二个参数的作用是递归地应用自身(请参见此处:https://numpy.org/doc/stable/reference/generated/numpy.diff.html)。所以这个:

y = diff(x, 10)
print(y)

这是它的简短版本

y = x
for _ in range(10):
    y = diff(y)
print(y)

也许您期望的是这样的:

y = x[10:] - x[:-10]
print(y)
相关问题