2017-10-18 5 views
0

큰 배열을 파일에 저장하고 싶습니다. 나는 pickle.dump(array, file, pickle.HIGHEST_PROTOCOL)을 사용했다. 작은 배열에서도 작동하지만 매우 큰 배열 (예 : 1GB 이상)을 저장하려고하면 전체 메모리가 사용되며 PC가 정지합니다.Python3.6 - 큰 배열을 파일로 저장하기

큰 배열을 저장하는 방법이 있습니까?

배열 예 :

[[array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32)], 
[array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32)], 
[array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32),array([1,2,3,298,299,300], dtype=float32)]] 
+0

어쩌면 더 많은 노력이 필요한 경우에도 배열을 저장하는 것이 이진 형식으로 수행 될 수 있습니다. 당신에게'array' (작은 하나주세요)의 예를 들어 보셨습니까? –

+1

'numpy'를 사용한다고 가정하면 : ['numpy.save'] (https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.save.html)를 사용해보십시오. '.npy' 파일. – L3viathan

+1

배열의 예를 제공해주십시오. –

답변

0

이 경우 (또는으로 변환 할 수 있음) NumPy와 배열은 다음 numpy.save

-1

이 HDF5 형식에서 모양과 파이썬 구현 h5py을 가지고 더 효율적입니다.

http://docs.h5py.org/en/latest/quick.html

이 가능 파일에 추가 할 수 있습니다. 데이터 세트를 반복 할 수 있습니다. 또는 클러스터에 데이터를 추가하십시오.

import h5py 

# data 
n = int(1e6) 
arr = np.arange(n) 

# writing to hdf5 
f = h5py.File("mytestfile.hdf5", "w") 
dset = f.create_dataset("data_name", shape=(n,)) 
dset[:n] = arr[:n] 

f.close() 

# reading from hdf5 
f = h5py.File("mytestfile.hdf5", "r") 
print(f["name"][:]) 

# outputs 
# [  0.  1.  2. ..., 999997. 999998. 999999.]