HDF5를 사용하면 많은 이점이 있습니다. @ EnricoGiampieri에 따르면, 일반적으로 단일 배열이 아닌 대규모 앙상블 데이터를 저장하는 데 일반적으로 사용됩니다. 또한 관련된 모든 메타 데이터를 동시에 저장하는 데 유용합니다. HDF5 website
HDF5 기술 슈트에서 포함 : 매우 복잡한 데이터 객체 및 메타 데이터의 다양한 종류를 나타낼 수
- 다목적 데이터 모델.
- 컬렉션의 데이터 개체 수나 크기에 제한이없는 완전히 이식 가능한 파일 형식입니다.
- 랩톱에서 대규모 병렬 시스템에 이르기까지 다양한 컴퓨팅 플랫폼에서 실행되는 소프트웨어 라이브러리로 C, C++, Fortran 90 및 Java 인터페이스가있는 높은 수준의 API 인 을 구현합니다.
- 액세스 시간 및 저장 공간 최적화를위한 풍부한 통합 성능 기능 세트입니다.
- 컬렉션의 데이터를 관리, 조작, 확인 및 분석하기위한 도구 및 응용 프로그램입니다.
그 자체 설명되는 계층 적 데이터 포맷 - 파일의 데이터 세트가 쉽게 검색 것을 의미한다. 매우 큰 파일 크기와 대량 병렬 I/O로 확장됩니다.
압축과 관련하여 이것은 개별 데이터 집합의 속성이며 해당 데이터 집합을 만들 때 지정해야합니다. GZIP, SZIP 및 LZF가 모두 지원되는 압축 알고리즘을 사용할 수있는 몇 가지 옵션이 있습니다. h5py wiki에 대한 자세한 정보가 있습니다.
이 파일에 압축을 적용하려면 다음을 수행하십시오 여기
import h5py
def store(eigenvalues,eigenvectors,name='01_'):
datafile = h5py.File(name+'data.h5', 'w')
eigenvalues_dset = datafile.create_dataset('eigenvalues', eigenvalues.shape, eigenvalues.dtype, compression='gzip', compression_opts=4)
eigenvectors_dset = datafile.create_dataset('eigenvectors', eigenvalues.shape, eigenvectors.dtype, compression='gzip', compression_opts=4)
datafile['eigenvalues'][:] = eigenvalues
datafile['eigenvectors'][:] = (eigenvectors)
datafile.close()
print "Successfully saved eigenvalues and eigenvectors"
내가 eigenvalues
과 eigenvectors
모두 NumPy와 배열이 있다고 가정 한을. 그렇지 않은 경우 변환해야합니다 (그냥 numpy.array(eigenvalues)
사용). 또한 데이터 세트를 할당하기 위해 [:]
을 사용했습니다. datafile['eigenvalues']
은 HDF5 객체이고 datafile['eigenvalues'][:]
은 해당 객체의 실제 데이터이기 때문입니다. HDF5 객체는 데이터뿐만 아니라 속성 및 메타 데이터도 보유합니다.
저는 h5py 라이브러리의 전문가는 아니지만, HDF5 형식으로 데이터를 저장하는 압축 방법이 있어야합니다. 너는 그것을 시도 할 수있다. 압축하지 않은 크기 오버 헤드는 파일 형식이 유지하는 중독 적 정보 때문일 수 있습니다. HDF5는 단지 하나의 어레이를 저장하는 것으로 생각되지 않지만, 다중 저장으로부터의 데이터의 복잡한 엔디 언블 (ensamble)을 복잡하게합니다. – EnricoGiampieri