在numpy数组中比较两个值

3 投票
3 回答
978 浏览
提问于 2025-04-15 20:48

在一个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)

撰写回答