matpdlotlib

时间:2016-03-13 21:41:34

标签: python numpy matplotlib

我试图从文件中读取日期时间字符串,后跟一些数据。它提供错误。我把它减少到跟随任务产生错误

import numpy as np
from matplotlib.dates import strpdate2num
from io import StringIO 

d = StringIO(u'16-03-13 20:13:55')
date = np.loadtxt(d, converters={0:strpdate2num('%y-%m-%d %H:%M:%S')})
date

提供以下错误:

ValueError: time data '16-03-13' does not match format '%y-%m-%d %H:%M:%S'

单独部分的执行效果很好

d = StringIO(u'16-03-13')
date = np.loadtxt(d, converters={0:strpdate2num('%y-%m-%d')})
date

给了我

array(736036.0)
随着时间的推移单独作品也很好

d = StringIO(u"20:13:55")
date= np.loadtxt(d, delimiter=' ', unpack=True, converters={0: strpdate2num('%H:%M:%S')})
date

给出

array(693596.8429976852)

我做错了什么?

1 个答案:

答案 0 :(得分:1)

问题是因为np.loadtxt正在尝试将您的字符串拆分为两个组件,因为它的默认分隔符是一个空格,并且您的字符串中有一个空格。

如果您将分隔符更改为其他任何内容,则可以使用,例如:

date = np.loadtxt(d, converters={0:strpdate2num('%y-%m-%d %H:%M:%S')}, delimiter=',')

print date
# 736036.842998

当然,如果您的字符串后面有数据,并且分隔符是日期时间字符串和数据之间的空格,您可能需要将日期和时间读作两个单独的字符串,然后将它们连接在一起。