在二进制文件中查找最接近的值

时间:2017-05-19 16:39:41

标签: python

我有一个包含一系列图像和时间戳数据的大型二进制文件(~4 GB)。我想找到最接近用户给定时间戳的图像。但是,文件中有数百万个时间戳。在Python 2.7中,使用seek,read,struct.unpack,只需将所有时间戳读入数组就花了900多秒。是否有一种有效的算法来查找不需要读取所有值的最接近的值?它们单调增加,但间隔非常不规则。

1 个答案:

答案 0 :(得分:0)

第一次尝试。它似乎每次都有效,但我不知道它是否是最有效的方式:

获取第一个和最后一个时间戳和帧数来计算平均时间步长。

使用平均时间步长和目标时间戳与开始时间戳之间的差异来查找近似索引。

检查目标的近似和2个周围时间戳。

如果目标介于两者之间,则采用最小差异的索引。   如果不是,请将近似索引设置为新的开头或结尾,并重复。