奇怪的loadtxt行为,重新安装后以前无法正常工作的脚本

时间:2012-05-29 11:58:23

标签: python numpy

我在python中使用numpy的loadtxt函数,以便将文本文件中的数据加载到数组中。标准的东西,不应该导致任何问题。

我已经编写了一个脚本来在ubuntu 10.04下执行此操作并且它完美无缺。但是我最近升级到ubuntu 12.04(完全重新安装,而不是升级),现在脚本不起作用。

这是文件中的一行,所有行都具有相同的结构:11个以制表符分隔的列:

Av = 0° Bv = 78°    273013  247744  1327      ****  Av' = 156°  Bv = 78°    259197  247803  1551

我想要第5列和第11列的数据,所以我使用此命令加载数据: loadtxt(file,usecols =(4,10),delimiter ='\ t')

但它不起作用,这就是ipython吐出的内容:

In [46]: test=loadtxt(file,usecols=(4,10),delimiter='\t')
--------------------------------------------------------------------------- ValueError   
Traceback (most recent call last)  <ipython-input-46-20a0923eaf9b> in <module>()
----> 1 test=loadtxt(file,usecols=(4,10),delimiter='\t')

/usr/lib/python2.7/dist-packages/numpy/lib/npyio.pyc in loadtxt(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin)
    794                 vals = [vals[i] for i in usecols]
    795             # Convert each value according to its column and store

--> 796             items = [conv(val) for (conv, val) in zip(converters, vals)]
    797             # Then pack it according to the dtype's nesting

    798             items = pack_items(items, packing)

ValueError: could not convert string to float:

它曾经用于我的旧系统(ubuntu 10.04)但我无法在新安装(ubuntu 12.04)下从这个文件加载数据。

如果有人能指出我的错误,我们将不胜感激!

1 个答案:

答案 0 :(得分:1)

我不确定为什么loadtxt曾经工作,它目前不能很好地处理字符串。但您可以使用genfromtxt来处理此记录:

import numpy as np

out = np.genfromtxt(file, usecols=(4,10), delimiter='\t')

如果省略usecols并加载整个记录,则用nan替换字符串条目。