Я только начал переходить с Matlab на Python 2.7, и у меня есть некоторые проблемы с чтением моих .mat файлов. Информация о времени хранится в формате данных Matlab. Для тех, кто не знаком с ним:
Серийный номер даты представляет собой календарную дату как число дней, прошедших с фиксированной базовой даты. В MATLAB серийная дата № 1 - 1 января 0000 года.
MATLAB также использует серийное время для представления долей дней, начинающихся в полночь; например, 6 часов вечера. равно 0.75 серийным дням. Таким образом, строка '31 -Oct-2003, 6:00 PM 'в MATLAB - это дата 731885.75.
(взято из документации Matlab)
Я хотел бы преобразовать это в формат времени Pythons, и я нашел этот учебник. Короче говоря, автор утверждает, что
Если вы проанализируете это с помощью 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): Это было исправлено в учебнике, опубликованном выше.