2016-09-28 248 views
0

我試圖使用numpy.fromfile是隻讀取第一行

numpy.fromfile()

其快速的讀取速度表格數據,但它只有在閱讀的第一行。 如何讀取整個表格? 我不想用大熊貓或numpy.loadtext()

np.fromfile('abc.txt', count=-1, sep=",") 
+0

爲什麼不loadtxt?你的文件如何詳細查看? – dnalow

+0

loadtext需要更多時間。我的文件大小約爲2GB,有8列 – user1779646

+2

如果你有幾行,它不能用你的分隔符「,」,因爲這個分隔符顯然只是分隔列,但分隔行的是換行符('chr(10) '或'chr(13)')。因此fromfile對於您的數據來說不夠靈活 – dnalow

回答

0

我可以讀一個空格隔開多文件:

In [312]: cat mytest.txt 
     0.26  0.63  0.97  1.01  0.42 
     1.66  1.54  1.07  2.13  1.44 
     2.57  2.73  2.45  2.47  2.29 
     3.75  3.91  3.37  3.32  4.32 
     4.27  4.33  4.05  4.21  4.48 
     0.37  0.58  0.07  0.59  0.48 
     2.17  1.99  1.61  1.30  2.09 
     2.82  2.08  2.39  2.48  2.51 
     3.12  3.36  2.76  3.62  3.25 
     4.24  4.97  4.51  4.25  4.65 
     0.42  0.03  0.29  0.10  0.46 
     1.11  2.05  1.40  1.86  1.36 
     2.07  2.16  2.81  2.47  2.37 
     3.65  3.25  3.60  3.23  3.80 
     4.23  3.75  4.67  4.34  4.78 
In [313]: np.fromfile('mytest.txt',count=-1,dtype=float,sep=' ') 
Out[313]: 
array([ 0.26, 0.63, 0.97, 1.01, 0.42, 1.66, 1.54, 1.07, 2.13, 
     1.44, 2.57, 2.73, 2.45, 2.47, 2.29, 3.75, 3.91, 3.37, 
     3.32, 4.32, 4.27, 4.33, 4.05, 4.21, 4.48, 0.37, 0.58, 
     0.07, 0.59, 0.48, 2.17, 1.99, 1.61, 1.3 , 2.09, 2.82, 
     2.08, 2.39, 2.48, 2.51, 3.12, 3.36, 2.76, 3.62, 3.25, 
     4.24, 4.97, 4.51, 4.25, 4.65, 0.42, 0.03, 0.29, 0.1 , 
     0.46, 1.11, 2.05, 1.4 , 1.86, 1.36, 2.07, 2.16, 2.81, 
     2.47, 2.37, 3.65, 3.25, 3.6 , 3.23, 3.8 , 4.23, 3.75, 
     4.67, 4.34, 4.78]) 

換行符被視爲只是一個空白。

,分隔的文件不跨線邊界

In [315]: cat test.txt 
-0.22424938, 0.16117005, -0.39249256 
-0.22424938, 0.16050598, -0.39249256 
-0.22424938, 0.15984190, -0.39249256 
    0.09214371, -0.26184322, -0.39249256 
    0.09214371, -0.26250729, -0.39249256 
    0.09214371, -0.26317136, -0.39249256 
In [316]: np.fromfile('test.txt',count=-1,dtype=float,sep=',') 
Out[316]: array([-0.22424938, 0.16117005, -0.39249256]) 

loadtxtgenfromtxt設計表格數據。是的,它們很慢,逐行讀取文件。但他們有更多的靈活性。 pandas有一個更快的CSV閱讀器。

爲WS分隔的文件速度測試:

In [319]: timeit np.loadtxt('mytest.txt') 
1000 loops, best of 3: 623 µs per loop 
In [320]: timeit np.fromfile('mytest.txt',count=-1,dtype=float,sep=' ') 
The slowest run took 4.90 times longer than the fastest. This could mean that an intermediate result is being cached. 
10000 loops, best of 3: 174 µs per loop