我在MATLAB中有一个(72500,1)维的时间戳矩阵。我在MATLAB中写过这样一句话:
returnMatrix = datestr(M(:,1)/86400 + datenum(1970,1,1)- 4/24);
我成功地得到了一个返回矩阵的日期。在
^{pr2}$为了得到相同的输出,我用Python编写了这样一个语句:
returnMatrix = (M[:, 0] / 86400 + date.toordinal(date(1970, 1, 1)) + 366 - (4/24))
returnMatrix = np.apply_along_axis((lambda x:[date.fromtimestamp(x[0]).strftime("%d/%m/%y")]),1,returnMatrix)
但作为输出,我得到的结果是:
returnMatrix = ['09/01/1970',...,'09/01/1970']
我应该如何编写语句才能得到MATLAB中的输出?在
假设
M
是一个包含秒的numpy
数组,如果您能接受ISO8601格式的日期字符串,那么可以这样做(这
.astype
是为了消除关于隐式转换的警告)。在我对这个问题的理解是,你有以秒为单位的数据,你想把它加到1970年1月1日的基准日期上,然后得到新的日期。“datetime”模块中的Python“timedelta”方法将很方便地解决此问题。在
在这里我提出我对你问题的解决办法
返回矩阵将包含所有日期。无需额外计算。在
我假设数据保存在list M中,我不明白您使用python list的方式。您访问列表的方式,即M[:0],实际上会将列表从第零个元素拆分到第零个元素(不包括第零个元素)。如果它是一维数据,那么你可以直接用M来表示。我想你对MATLAB的背景感到困惑。在
相关问题 更多 >
编程相关推荐