尝试使用np.loadtxt()时出错

时间:2015-03-25 20:29:13

标签: python python-2.7 numpy

我已经看到了这个问题的几个答案,主要建议我用np.genfromtxt()替换np.loadtxt ....但这会产生不同的问题。

有问题的一行是:

imported_array = np.loadtxt(fname, delimiter='\t', skiprows = 1)

该文件本身声称是.xls但我发现它确实是制表符分隔的文本文件。此代码通常适用于此系统生成的文件。数据看起来像

Time    Flow Rate    Pressure  
0.002   273.4474545 3.542497271

等等。我得到的错误是

items = [conv(val) for (conv, val) in zip(converters, vals)]
ValueError: could not convert string to float: 

它声称的字符串是一个奇怪的字符......它可能是一个资本伽玛。哪个我在数据文件中找不到。第一行下面的所有内容都是数字,绝对不是大写伽玛。我试着在文件中搜索看起来像它的特殊字符,但无济于事。

当我尝试使用np.genfromtxt:

imported_array = np.genfromtxt(fname, delimiter='\t', skiprows = 1)   

 raise ValueError(errmsg)
 ValueError: Some errors were detected !
Line #3 (got 4 columns instead of 1)
Line #7 (got 4 columns instead of 1)
Line #9 (got 2 columns instead of 1)
Line #59 (got 14 columns instead of 1)
Line #61 (got 2 columns instead of 1)
Line #70 (got 2 columns instead of 1)
Line #71 (got 4 columns instead of 1)

与此同时,在同一系统生成的先前数据集中,我要么没有遇到这个问题,要么就有20个有这个问题。

1 个答案:

答案 0 :(得分:0)

我从here发现,我的问题很可能与这样一个事实有关,即尽管这些文件是NAMED .xls,但它们并不是.xls文件。我正在指定分隔符,这是分隔符。我不确定为什么它有时会起作用,而不是其他人。但是,当我将该行改为:

    imported_array = np.genfromtxt(fname, skiprows = 1, dtype = float)

(删除分隔符规范),它有效。

它也用作具有相同参数的np.loadtxt。指定分隔符让我搞砸了,这对我来说真的很奇怪。