比较numpy数组中的两个以下值

时间:2010-03-24 16:50:45

标签: python indexing loops numpy iteration

在numpy数组中触摸两个以下值的最佳方法是什么?

示例:

npdata = np.array([13,15,20,25])
for i in range( len(npdata) ):
    print npdata[i] - npdata[i+1]

这看起来很乱,并且还需要循环的最后一次迭代的异常代码。 任何想法?

谢谢!

3 个答案:

答案 0 :(得分:3)

numpy为这个基本用例

提供了一个函数diff
>>> import numpy
>>> x = numpy.array([1, 2, 4, 7, 0])
>>> numpy.diff(x)
array([ 1,  2,  3, -7])

您的代码段会计算更接近-numpy.diff(x)的内容。

答案 1 :(得分: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

正如您所看到的,它成功地打印了数组中所有连续对的总和,没有任何例外情况。

答案 2 :(得分:0)

您可以使用ediff1d来获取连续元素的差异。更一般地说,a[1:] - a[:-1]将给出连续元素的差异,也可以与其他运算符一起使用。