【发布时间】:2011-12-12 20:26:23
【问题描述】:
我在尝试在 Python 中使用 time 和 datetime 来实现一个相当简单的目标时遇到了困难。我已经使用过这些模块,并阅读了文档,但我认为我没有得到正确的方法。
我有一个数字信号(一个长数组),它表示以给定采样率记录的时间序列,例如每秒 N 个样本。
我有以下格式的元组列表(虚拟数据):
[(150, 150),
(450, 90),
(750, 150),
(1050, 90),
(1350, 150),
(1650, 90),
...
(1950, 150)]
每个元组代表给定区间的起始样本和样本数。区间是连续的,所以起始样本是单调递增的。
我想要的是获取表示开始时间和持续时间间隔的字符串(因为每个样本都有一个固定的已知持续时间,由采样率决定),如下所示:
[('00:12.000', '2.245'),
('00:15.057', '2.158'),
('00:18.857', '3.045'),
etc.]
(重要提示:这些值不用于计算,只是为了说明结构和格式。这些值是任意键入的数字)
我可以想象用四舍五入、减法和模除法等非常丑陋的方法来得到这个,但我认为 Python 和所有这些漂亮的时间处理模块必须有一种 Python 的方法来得到我需要的东西。
有人吗?
感谢阅读! (并希望即将到来的答案可能会启发其他人未来的道路)
【问题讨论】:
-
你知道在第二个例子中这是一个字符串列表而不是一个元组列表,不是吗?括号在那里没用。
-
你已经尝试过什么?另外,我很难理解我们应该如何计算您列出的第一组元组与您列出的第二组值之间的关系。
-
从两个列表的第一行看来,150 个样本需要 2.245 秒,这意味着您的采样率为 0.015 秒。但在第二行,90 个样本需要 2.158 秒,这意味着采样率为 0.024 秒。也许这个例子需要修复?
-
@MikePennington :实际值没有意义,因为我只是输入了随机数据。只有格式很重要。此外,对我来说,列表或元组也一样。我想要 MM:SS.SSS 格式的开始时间和 SS.SSS 格式的间隔,没有前导零。
-
@mtrw :我考虑过修复这个例子,但这会带来太多的工作,因为我没有代码来做这件事 :o) 。无论如何,我的采样周期大约是 0.01 或 0.001 秒,这并不重要。
标签: python datetime time timestamp string-formatting