在numpy数组中比较两个值
在一个numpy数组中,最好的方法是什么来处理两个相邻的值?
举个例子:
npdata = np.array([13,15,20,25])
for i in range( len(npdata) ):
print npdata[i] - npdata[i+1]
这个看起来真的很乱,而且在循环的最后一次迭代时还需要额外的异常处理代码。
有什么好主意吗?
谢谢!
3 个回答
0
你可以使用 ediff1d 来计算连续元素之间的差值。更一般来说,a[1:] - a[:-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
你可以看到,这段代码成功地打印出了数组中所有相邻两个数的和,而且最后一次循环也没有出现任何问题。
3
numpy提供了一个叫做diff
的函数,可以用来处理这个基本的需求。
>>> import numpy
>>> x = numpy.array([1, 2, 4, 7, 0])
>>> numpy.diff(x)
array([ 1, 2, 3, -7])
你的代码片段计算的结果更接近于-numpy.diff(x)
。