小编Sin*_*ina的帖子

Python matplotlib.dates.date2num:将numpy数组转换为matplotlib日期时间

我正在尝试使用日期时间轴绘制自定义图表.我的理解是matplotlib需要浮点格式,这是自纪元以来的几天.所以,我想根据matplotlib的要求将numpy数组转换为float epoch.

datetime值存储在名为t的numpy数组中:

In [235]: t
Out[235]: array(['2008-12-01T00:00:59.000000000-0800',
                 '2008-12-01T00:00:59.000000000-0800',
                 '2008-12-01T00:00:59.000000000-0800',
                 '2008-12-01T00:09:26.000000000-0800',
                 '2008-12-01T00:09:41.000000000-0800'], dtype='datetime64[ns]')
Run Code Online (Sandbox Code Playgroud)

显然,matplotlib.dates.date2num只接受一系列python日期时间作为输入(不是numpy datetimes数组):

import matplotlib.dates as dates
plt_dates = dates.date2num(t)
Run Code Online (Sandbox Code Playgroud)

引发AttributeError:'numpy.datetime64'对象没有属性'toordinal'

我该如何解决这个问题?我希望有一个适用于所有类型的numpy.datetime类似对象的解决方案.

我最好的解决方法(我不确定是正确的)是不要使用date2num.相反,我尝试使用以下内容:

z = np.array([0]).astype(t.dtype)
plt_dates = (t - z)/ np.timedelta64(1,'D')
Run Code Online (Sandbox Code Playgroud)

即使如果这个解决方案是正确的,使用库函数更好,而不是手动adhoc解决方法.

python datetime numpy matplotlib

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

datetime ×1

matplotlib ×1

numpy ×1

python ×1