gpt4 book ai didi

python - 将 Matlab 的 datenum 格式转换为 Python

转载 作者:太空狗 更新时间:2023-10-29 17:10:59 25 4
gpt4 key购买 nike

我刚开始从 Matlab 迁移到 Python 2.7,我在读取 .mat 文件时遇到了一些问题。时间信息以 Matlab 的 datenum 格式存储。对于那些不熟悉它的人:

A serial date number represents a calendar date as the number of days that has passed since a fixed base date. In MATLAB, serial date number 1 is January 1, 0000.

MATLAB also uses serial time to represent fractions of days beginning at midnight; for example, 6 p.m. equals 0.75 serial days. So the string '31-Oct-2003, 6:00 PM' in MATLAB is date number 731885.75.

(taken from the Matlab documentation)

我想将其转换为 Python 时间格式,我找到了 this tutorial .简而言之,作者指出

If you parse this using python's datetime.fromordinal(731965.04835648148) then the result might look reasonable [...]

(在任何进一步转换之前),这对我不起作用,因为 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):这已在上面发布的教程中修复。

最佳答案

您链接到解决方案,它有一个小问题。是这样的:

python_datetime = datetime.fromordinal(int(matlab_datenum)) + timedelta(days=matlab_datenum%1) - timedelta(days = 366)

可以找到更长的解释here

关于python - 将 Matlab 的 datenum 格式转换为 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13965740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com