3

经过多次修改,我终于想出了一段代码,它获取同一列表中每个整数之间的差异,并将它们转储到一个新列表中。这是我的代码:

ints = [3, 5, 9, 15, 36]
difs = []
h = 0

while h < len(ints) - 1:    
    difs.append(ints[1 + h] - ints[0 + h])
    h = h + 1
print difs  

运行时,列表 'difs' 包含 [2, 4, 6, 21] (即 'int' 列表中的整数之间的差异。

我的问题:有没有更简单的函数——也许在 numpy 中——可以自动完成?

4

3 回答 3

4

有一个函数numpynumpy.diff()

>>> import numpy
>>> numpy.diff([3, 5, 9, 15, 36])
array([ 2,  4,  6, 21])
于 2013-10-09T04:48:53.213 回答
2

使用列表推导zip

>>> ints = [3, 5, 9, 15, 36]
>>> [b-a for a, b in  zip(ints, ints[1:])]
[2, 4, 6, 21]
于 2013-10-09T04:47:49.877 回答
1

是的,numpy 中有一个函数 diff()。可以这样使用...

ints = [3, 5, 9, 15, 36]
x = numpy.array(ints)

numpy.diff(x)

输出:

[2, 4, 6, 21]  

您还可以使用函数中的轴参数使用相同的函数来获取两个列表之间的差异。

于 2013-10-09T04:59:42.567 回答