Tri*_*ico 4 numpy matplotlib python-3.x
在我目前的项目中,我想使用以下代码从文本文件中将一些实验数据读入Python:
import numpy as np
from matplotlib.dates import strpdate2num
data = np.recfromtxt('example.txt',
comments='#',
delimiter=';',
names=('time', 't_ref', 't_s', 't_amb1', 't_amb2', 't_amb3')
,converters={'time': strpdate2num('"%d.%m.%Y %H:%M:%S"')}
)
Run Code Online (Sandbox Code Playgroud)
用example.txt看起来像
"04.10.2012 08:15:27";14.4;16;12.78;12.65;12.52
"04.10.2012 08:15:37";14.4;16;12.78;12.65;12.5
"04.10.2012 08:15:47";14.4;16;12.78;12.62;12.5
"04.10.2012 08:15:57";14.4;15.9;12.78;12.65;12.52
...
Run Code Online (Sandbox Code Playgroud)
在Python 2.7,一切都很好,但是当我尝试在3.2传输代码,我收到了TypeError来自strpdate2num()说法
TypeError: strptime() argument 0 must be str, not <class 'bytes'>
Run Code Online (Sandbox Code Playgroud)
我对Python很新,但我的理论是NumPy以某种方式将时间数组内部存储为字节而不是字符串,这与Python 3中对两者的更严格处理相冲突.
长话短说,您是否知道如何解决这个问题的原因是什么?
这是一个解决方法:
import numpy as np
import matplotlib.dates as mdates
def bytedate2num(fmt):
def converter(b):
return mdates.strpdate2num(fmt)(b.decode('ascii'))
return converter
date_converter = bytedate2num("%d.%m.%Y %H:%M:%S")
data = np.recfromtxt('example.txt',
comments='#',
delimiter=';',
names=('time', 't_ref', 't_s', 't_amb1', 't_amb2', 't_amb3'),
converters={'time': date_converter})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7763 次 |
| 最近记录: |