笨重的计算增量数字之间的差异,是否有更美妙的方式?

Bry*_*unt 2 python list

以下代码工作得很好.但它看起来如此冗长,肯定有一种更优雅的方式来计算它?

我的想法是我有一个包含100个递增时间戳的列表,我想查看这些时间戳并计算每个时间戳之间的平均时间.

下面的代码起作用,但我确信反转这样的列表真的很低效.

有什么建议?

#!/usr/bin/python 

nums = [1,4,6,10]
print nums
nums_orig = list(nums)

nums_orig.pop()
nums.reverse()
nums.pop()
nums.reverse()

print nums
print nums_orig

total = 0

for idx, val in enumerate(nums):
  difference = val - nums_orig[idx]
  total += difference
  print idx, val - nums_orig[idx]

print "Mean difference is %d" % (total / len(nums))
Run Code Online (Sandbox Code Playgroud)

fra*_*xel 8

如果你有numpy:

>>> import numpy as np
>>> np.diff([1,4,6,10]).mean()
3.0
Run Code Online (Sandbox Code Playgroud)


Abh*_*jit 6

你在寻找什么

>>> nums = [1,4,6,10]
>>> [x-y for x,y in zip(nums[1:],nums)]
[3, 2, 4]
>>> delta=[x-y for x,y in zip(nums[1:],nums)]
>>> float(sum(delta))/len(delta)
3.0
Run Code Online (Sandbox Code Playgroud)

使用Starmap的解决方案

>>> from itertools import starmap
>>> from operator import sub
>>> sum(starmap(sub,zip(nums[1:],nums)))/float(len(nums)-1)
3.0
Run Code Online (Sandbox Code Playgroud)