2016-09-28 11 views
0

を読んでいます。 テーブル全体を読み取る方法は? 私は空白区切り複数行のファイルを読み込むことができパンダやnumpy.loadtext()numpy.fromfileは、私はその高速性から</p> <blockquote> <p>numpy.fromfile()</p> </blockquote> <p>を使用して表形式のデータを読み込むしようとしているが、そのは、最初の行のみを読み込むだけで1行目

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

:そのWS区切られたファイルのための

スピードテスト?あなたのファイルはどのように詳細に見えますか? – dnalow

+0

loadtextに時間がかかります。私のファイルは約2GBのサイズで8列あります – user1779646

+2

いくつかの行がある場合、セパレータでは使用できません "、"これは明らかに列のみを区切るためですが、行を区切るのは改行文字( ' 'または' 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は、表形式のデータのために設計されていません。はい、ファイルを1行ずつ読み込むのが遅いです。しかし、彼らはより多くの柔軟性を持っています。 pandasには、より高速のcsvリーダーがあります。 loadtxtない理由

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 
関連する問題