In [2]:
from array import array
from random import random
In [20]:
floats = array('d', (random() for i in range(10**7)))
In [7]:
floats[-1]
Out[7]:
In [37]:
%%timeit
with open('floats-10m.txt', 'w') as f:
for fp in floats:
f.write(str(fp))
f.write('\n')
In [19]:
%%timeit
with open('floats', 'wb') as fp:
floats.tofile(fp)
천만 개의 같은 숫자를 담은 텍스트 파일을 읽어들이는데 수 초 (2.7초) 소요
In [26]:
%%timeit
with open('floats.txt', 'r') as f:
f.readlines()
array.fromfile은 텍스트 파일에서 읽어오는 것보다 수십 배 (30-60배) 빠르다.
In [18]:
%%timeit
floats2=array('d')
with open('floats', 'rb') as fp:
floats2.fromfile(fp, 10**7)
In [29]:
numbers = array('h',[-2,-1,0,1,2])
numbers
Out[29]:
In [30]:
memv = memoryview(numbers)
In [31]:
len(memv)
Out[31]:
In [32]:
memv[0]
Out[32]:
In [34]:
memv_oct = memv.cast('B')
memv_oct
Out[34]:
In [35]:
memv_oct.tolist()
Out[35]:
바이트 오프셋 5에 4 할당
In [36]:
memv_oct[5]=4
numbers
Out[36]:
In [38]:
import numpy as np
In [39]:
%timeit floats = np.loadtxt('floats-10m.txt')
Numpy 바이너리 형식으로 천만 개의 부동소수점 저장
In [40]:
%timeit np.save('floats-10m.npy', floats)
In [41]:
%timeit floats2 = np.load('floats-10m.npy', 'r+')
In [ ]:
In [ ]: