我有一系列日期时间对象,想要计算它们之间的平均增量。
例如,如果输入为(2008-10-01 12:15:00, 2008-10-01 12:25:00, 2008-10-01 12:35:00)
,那么平均增量将是00:10:00或10分钟。
有关如何使用Python计算此内容的任何建议吗?
答案 0 :(得分:11)
就算法而言,这很简单。只需找到最大和最小日期时间,取差值,然后除以您查看的日期时间数。
如果你有一个日期时间数组a,你可以这样做:
mx = max(a)
mn = min(a)
avg = (mx-mn)/(len(a)-1)
取回平均差异。
编辑:修复了逐个错误
答案 1 :(得分:3)
说a
是你的清单
sumdeltas = timedelta(seconds=0)
i = 1
while i < len(a):
sumdeltas += a[i-1] - a[i]
i = i + 1
avg_delta = sumdeltas / (len(a) - 1)
这确实会使你的三角洲达到平均值。
答案 2 :(得分:2)
由于你似乎在你的例子中抛出了时间1和3之间的20分钟增量,我会说你应该只对日期时间列表进行排序,将相邻时间之间的增量相加,然后除以n-1
您是否有可以与我们分享的代码,我们可以帮您调试吗?
答案 3 :(得分:1)
您可以从前一个中减去每个连续日期(得到一个timedelta对象,表示天,秒的差异)。然后,您可以对timedelta对象进行平均以找到答案。
答案 4 :(得分:0)
小澄清
from datetime import timedelta
def avg(a):
numdeltas = len(a) - 1
sumdeltas = timedelta(seconds=0)
i = 1
while i < len(a):
delta = abs(a[i] - a[i-1])
try:
sumdeltas += delta
except:
raise
i += 1
avg = sumdeltas / numdeltas
return avg