【发布时间】:2016-02-03 17:13:11
【问题描述】:
我有一个两行的 python numpy 数组。一行描述事件的开始时间,另一行描述结束时间(此处时间为纪元整数)。代码示例意味着,index=0 处的事件从 time=1 开始,在 time=7 结束。
start = [1, 8, 15, 30]
end = [7, 16, 20, 40]
timeranges = np.array([start,end])
我想知道时间范围是否相交。这意味着我需要一个函数/算法来计算信息,即从 8 到 16 的时间范围与从 15 到 20 的时间范围相交。
我的解决方案是,使用两个相交的循环并检查任何开始时间或结束时间是否在另一个时间范围内。但是使用 ipython 它会持续很长时间,因为我的 timeranges 充满了近 10000 个事件。
是否有一个优雅的解决方案,可以在“短”时间内(例如,不到一分钟)获得结果?
【问题讨论】:
-
那么,输出只是一个标志(真/假)?
-
我想获取发生这种情况的索引,因为它表示失败。
-
那么,列出的示例数据的确切输出是什么?另外,数据是否已经针对开始和结束进行了排序?
-
列表未排序。输出应该以我可以在数组中找到响应索引的方式提供每个交叉点的信息。我的循环解决方案适用于这种情况:'end_index=1, intersect_index=2' 和 'start_index=2, intersect_index=1'。只要找到其中一个就足够了。