我正在研究一种算法,该算法选择一组具有特定特征的日期/时间对象,但没有成功。
要使用的数据是在日期/时间对象列表中, 例如:
lstDays [i] [j],
我< = day chooser,
j< = time chooser
有什么问题?我需要一组最近的日期/时间对象。每次必须来自不同日期。
例如:[2012-09-09 12:00,2012-09-10 12:00,2012-09-11 12:00]
这组日期/时间对象的示例是最好的示例,因为它最小化为零。
重要
尝试对此进行语境化:我想观察一个现象是否在不同的日子同时发生。如果没有,我想评估我的学习时间之间的距离是否合理。
我想要通用算法到任意天数和时间。此算法应返回所有日期时间对象集及其时间距离:
[2012-09-09 12:00,2012-09-10 12:00,2012-09-11 12:00],0
[2012-09-09 13:00,2012-09-10 13:00,2012-09-11 13:05],5
等等。
:: “0”,因为datetime对象第一行上所有时间之间的差异为零秒。
:: “5”,因为来自datetime对象的第二行上所有时间之间的差异为5秒。
编辑:此处代码
for i in range(len(lstDays)):
for j in range(len(lstDays[i])):
print lstDays[i][j]
输出:
2013-07-18 11:16:00
2013-07-18 12:02:00
2013-07-18 12:39:00
2013-07-18 13:14:00
2013-07-18 13:50:00
2013-07-19 11:30:00
2013-07-19 12:00:00
2013-07-19 12:46:00
2013-07-19 13:19:00
2013-07-22 11:36:00
2013-07-22 12:21:00
2013-07-22 12:48:00
2013-07-22 13:26:00
2013-07-23 11:18:00
2013-07-23 11:48:00
2013-07-23 12:30:00
2013-07-23 13:12:00
2013-07-24 11:18:00
2013-07-24 11:42:00
2013-07-24 12:20:00
2013-07-24 12:52:00
2013-07-24 13:29:00
注意:lstDays [i] [j]是日期时间对象。
lstDays = [[/ * datetime对象从一天i * /],[/ * datetime对象从一天i + 1 * /],[/ * datetime对象从一天i + 2 / *] ,. ..]
我并不担心性能,先验。
希望你能帮助我! (:
答案 0 :(得分:0)
您始终可以将时间计算到列表中,然后估算差异,并将那些低于该限制的对象分组。全部打包到字典中,差异为值,时间戳为键。如果这不是您所需要的,我很确定从中选择您需要的任何结果应该很容易。
import numpy
import datetime
times_list = [object1.time(), object2(), ..., objectN()]
limit = 5 # limit of five seconds
groups = {}
for time in times_list:
delta_times = numpy.asarray([(tt-time).total_seconds() for tt in times_list])
whr = numpy.where(abs(delta_times) < limit)[0]
similar = [str(times_list[ii]) for ii in whr]
if len(similar) > 1:
similar.sort()
max_time = numpy.max(delta_times[whr]) # max? median? mean?
groups[tuple(similar)] = max_time
答案 1 :(得分:0)
生成直方图:
hours = [0] * 24
for object in objects: # whatever your objects are
# assuming object.date_time looks like '2013-07-18 10:55:00'
hour = object.date_time[11:13] # assuming the hour is in positions 11-12
hours[int(hour)] += 1
for hour in xrange(24):
print '%02d: %d' % (hour, hours[hour])