在numpy数组中触摸两个以下值的最佳方法是什么?
示例:
npdata = np.array([13,15,20,25])
for i in range( len(npdata) ):
print npdata[i] - npdata[i+1]
这看起来很乱,并且还需要循环的最后一次迭代的异常代码。 任何想法?
谢谢!
答案 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]
将给出连续元素的差异,也可以与其他运算符一起使用。