我很震惊,我已经在各种兔子洞里跑了这么长时间,试图弄清楚这个问题(我认为)应该是相对简单的。
我有一个numpy字符串数组保存为变量t
,其中一些相关数据作为raw_data:
t = array(['20141017000000','20141017000001','20141017000002'],dtype='<U14')
raw_data = np.array([1,2,3],dtype='float')
日期格式为YYYYmmddHHMMSS
我只是想将其转换为与matplotlib兼容的datetime对象,以用于绘图目的。
我发现的各种答案不可避免地会导致错误,包括:
选项1
import matplotlib.dates as dates
convertedDate = dates.num2date(t)
Error: can't multiply sequence by non-int of type 'float'
选项#2(from here)
from datetime import datetime
convertedDate = datetime.strptime(t, '%YY%mm%dd%HH%MM%ss')
Error: strptime() argument 1 must be str, not numpy.ndarray
选项#3(来自here)
import numpy as np
convertedDate = [np.datetime64(x) for x in t]
虽然这个选项3可以工作,但输出对我来说并不太有意义,因为它看起来与原始字符串相同,例如convertedDate[0]
返回numpy.datetime64('20141017000000')
。而且当我试着把它画出来的时候,我得到了这个:
import matplotlib.pyplot as plt
plt.plot(convertedDate,raw_data)
OverflowError: int too big to convert
任何帮助都很感激。
2条答案
按热度按时间1u4esq0p1#
可以使用
pandas
:输出:
hvvq6cgz2#
我猜你可以用这个方法
datetime.strptime(date_string, format)