在NumPy数组中比较以下两个值

3
什么是在numpy数组中触碰两个相邻值的最佳方法?
例如:
npdata = np.array([13,15,20,25])
for i in range( len(npdata) ):
    print npdata[i] - npdata[i+1]

这看起来非常混乱,此外还需要为循环的最后一次迭代添加异常代码。有什么想法吗?
谢谢!
3个回答

3
numpy提供了一个函数diff来处理这个基本用例。
>>> import numpy
>>> x = numpy.array([1, 2, 4, 7, 0])
>>> numpy.diff(x)
array([ 1,  2,  3, -7])

你的代码片段计算出了一个更接近于 -numpy.diff(x) 的结果。


0

那么 range(len(npdata) - 1) 怎么样?

这里是代码(使用简单数组,但不重要):

>>> ar = [1, 2, 3, 4, 5]
>>> for i in range(len(ar) - 1):
...   print ar[i] + ar[i + 1]
... 
3
5
7
9

正如您所看到的,它成功地打印了数组中所有连续对的总和,最后一次迭代也没有任何异常。


0

您可以使用ediff1d来获取相邻元素之间的差异。更一般地,a[1:] - a[:-1]将给出相邻元素之间的差异,并且还可以与其他运算符一起使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接