从具有不同大小的行的txt读取值到单个numpy数组中

时间:2012-10-15 18:30:46

标签: python arrays numpy io scipy

我需要读取一个结构如下的文件:

 1 2 3 4 5
 6 7 8 9 10
 11 22
 13 14 15 16 17
 18 19 20 21 22
 23 24

我需要在单个数组中读取此文件= [1,2,3,...,23,24]

如何在numpy中做到这一点?使用设:

Array = np.genfromtxt(pathToFile, dtype=float, skip_header=1, comments='/')

不起作用:

Line #796537 (got 2 columns instead of 5)

4 个答案:

答案 0 :(得分:5)

更简单的方法:

result=np.fromfile(path_to_file,dtype=float,sep="\t",count=-1)

答案 1 :(得分:2)

使用np.fromstring代替吗?

>>> np.fromstring(''.join(open('yourfile.txt', 'r').read().splitlines()),sep=" ")


array([  1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,  11.,
        22.,  13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  21.,  22.,
        23.,  24.])
  
    
      

    
  

答案 2 :(得分:0)

为什么你需要numpy

In [101]: with open('data1.txt') as f:
    lis=[float(y) for x in f for y in x.split()]
    print lis
   .....:     
   .....:     
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 22.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0]

答案 3 :(得分:0)

删除新行并保存到另一个文件:

open('ofile.txt','w').write(''.join(open('infile.txt', 'r').read().splitlines()))

然后它会起作用:

>>> np.genfromtxt('ofile.txt')
array([  1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,  11.,
    22.,  13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  21.,  22.,
    23.,  24.])