csvを読むよりnumpy arrayをロードした方がだいぶ速い

大きなファイルだと、np.genfromtxtとnp.loadでスピードにかなり差が出る。

import numpy as np
import time
a=np.arange(10000).reshape([1000,10])

np.save('data_to_read_np',a)
np.savetxt('data_to_read_csv.csv',a,delimiter=',')

1000回ずつ読み込む。

rep = 1000

start = time.time()
for i in xrange(rep):
    b = np.genfromtxt('data_to_read_csv.csv', delimiter=',')
elapsed_time_csv =time.time() - start

start = time.time()
for i in xrange(rep):
    c = np.load('data_to_read_np.npy')
elapsed_time_np =time.time() - start

print('Read csv:'+str(elapsed_time_csv)+'sec')
print('Read np: '+str(elapsed_time_np)+'sec')

結果。

Read csv:10.2129998207sec
Read np: 0.53200006485sec

小さなファイルならそれほど差は出ない。

a=np.arange(1000).reshape([100,10])

結果

Read csv:1.47600007057sec
Read np: 0.424000024796sec

np.loadの方が、ファイルサイズから影響を受けづらくなっている。