我正在尝试使用日期时间轴绘制自定义图表.我的理解是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解决方法.