gpt4 book ai didi

numpy - 在 Python 3.2 中使用 Matplotlib 的 strpdate2num 时出现类型错误

转载 作者:行者123 更新时间:2023-12-04 22:32:39 24 4
gpt4 key购买 nike

在我当前的项目中,我想使用以下代码将一些实验数据从文本文件读取到 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"')}
)
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
...

在 Python 2.7 中,一切都很好,但是当我尝试在 3.2 中传输代码时,我从 TypeError 得到一个 strpdate2num()
TypeError: strptime() argument 0 must be str, not <class 'bytes'>

我对 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})

关于numpy - 在 Python 3.2 中使用 Matplotlib 的 strpdate2num 时出现类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16496017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com