在genfromtxt中使用转换器函数失败

2024-10-01 10:21:10 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图使用genfromtxt读取一个空格分隔的文件,并使用一个转换函数来转换逗号作为十进制分隔符的数字时,我得到了一个类型错误。我的转换器功能好像有问题。但是,当我在单个值上使用它时,它确实可以正常工作。在

这是我的代码(我使用的是Matplotlib/Pylab):

t = dtype([('Date', 'U12'), ('Time', 'U10'), ('Cond', 'f4'), ('Temp', 'f4')])

conv = lambda valstr: float(valstr.replace(',','.'))

c = {2:conv, 3:conv}

data = genfromtxt('Example.csv', dtype = t,
    skip_header=1, delimiter = ' ', converters = c)

数据如下:

^{pr2}$

这是错误消息的一部分:


TypeError                                 Traceback (most recent call last)
<ipython-input-41-c65c2d17c55d> in <module>()
      5 c = {2:conv, 3:conv}
      6 
----> 7 data = genfromtxt('Example.csv', dtype = t, skip_header=1, delimiter = ' ', converters = c)


...


<ipython-input-41-c65c2d17c55d> in <lambda>(valstr)
      1 t = dtype([('Date', 'U12'), ('Time', 'U10'), ('Cond', 'f4'), ('Temp', 'f4')])
      2 
----> 3 conv = lambda valstr: float(valstr.replace(',','.'))
      4 
      5 c = {2:conv, 3:conv}

TypeError: expected an object with the buffer interface

我是不是做错了什么,或者这是genfromtxt中的某种bug?在

我在win7x64上使用python3.2。Numpy版本是1.6.2。在


Tags: lambdadatetime错误floattempreplacedtype