Python:将文件加载到numpy数组时出错

时间:2013-11-26 12:55:20

标签: python arrays numpy

我有一个看起来像这样的文件,它有大约80,000行:

-1.1361818e-001  4.1730759e-002 -9.8787775e-001  9.7195663e-002
-1.1361818e-001  4.1730759e-002 -9.8787775e-001  9.7195663e-002
-1.1361818e-001  4.1730759e-002 -9.8787775e-001  9.7195663e-002
-1.1361818e-001  4.1730759e-002 -9.8787775e-001  9.7195663e-002

我想使用numpy和scikit,并希望将文件写入数组,以便它看起来像这样:

array = [[-1.1361818e-001,4.1730759e-002,-9.8787775e-001,9.7195663e-002],[-1.1361818e-001 ,4.1730759e-002,-9.8787775e-001,9.7195663e-002]...]

我在https://stackoverflow.com/a/10938021/1372560

找到了以下示例

我试图让它适应我的例子:

import numpy as np
a = np.loadtxt("/path2file", delimiter="\t")
print a

我收到错误“ValueError:float()的无效文字:-1.1361818e-001 4.1730759e-002 -9.8787775e-001 9.7195663e-002”

我真的被困在这里,感谢你的帮助。非常感谢提前!

2 个答案:

答案 0 :(得分:3)

这对我有用:

import numpy as np
a = np.loadtxt("a.txt")
print a

输出:

[[-0.11361818  0.04173076 -0.98787775  0.09719566]
 [-0.11361818  0.04173076 -0.98787775  0.09719566]
 [-0.11361818  0.04173076 -0.98787775  0.09719566]
 [-0.11361818  0.04173076 -0.98787775  0.09719566]]

答案 1 :(得分:1)

只需将delimiter字段留空,然后它就会在任何空格处分割。 \t只是一个空白字符。:

演示:

>>> import numpy as np
>>> from StringIO import StringIO                                                     
>>> c = StringIO("1.234\t1.23456  1.234234")                                                 
>>> np.loadtxt(c)                                                                           
array([ 1.234   ,  1.23456 ,  1.234234])

来自docs

delimiter : str, optional
    The string used to separate values. By default, this is any whitespace.