我刚开始从 Matlab 迁移到 Python 2.7,但在阅读我的 .mat 文件时遇到了一些麻烦。时间信息以 Matlab 的 datenum 格式存储。对于那些不熟悉它的人:
序列日期编号将日历日期表示为自固定基准日期以来经过的天数。在 MATLAB 中,序列号 1 是 0000 年 1 月 1 日。
MATLAB 还使用串行时间来表示从午夜开始的天数;例如,下午 6 点等于 0.75 个连续日。所以 MATLAB 中的字符串 '31-Oct-2003, 6:00 PM' 是日期编号 731885.75。
(取自 Matlab 文档)
我想把它转换成 Python 的时间格式,我找到了这个教程。简而言之,作者指出
如果您使用 python 解析它,
datetime.fromordinal(731965.04835648148)
那么结果可能看起来很合理 [...]
(在任何进一步的转换之前),这对我不起作用,因为 datetime.fromordinal 需要一个整数:
>>> datetime.fromordinal(731965.04835648148)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: integer argument expected, got float
虽然我可以将它们四舍五入以获得每日数据,但我实际上需要导入每分钟的时间序列。有没有人有这个问题的解决方案?我想避免重新格式化我的 .mat 文件,因为它们很多,我的同事也需要使用它们。
如果有帮助,其他人要求反过来。可悲的是,我对 Python 太陌生,无法真正理解那里发生的事情。
/edit (2012-11-01):这已在上面发布的教程中修复。