【发布时间】:2012-12-20 05:14:24
【问题描述】:
我刚开始从 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 的时间格式,我找到了this tutorial。简而言之,作者指出
如果您使用 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 文件,因为它们有很多而且我的同事也需要使用它们。
如果有帮助,someone else asked for the other way round。遗憾的是,我对 Python 还太陌生,无法真正理解那里发生的事情。
/edit (2012-11-01):这已在上面发布的教程中修复。
【问题讨论】: