Python 스토리지 읽기 HDF5 파일 코드 분석
HDF(Hierarchical Data Format)는 대용량의 과학 데이터를 저장하고 처리하기 위해 설계된 파일 형식과 해당 라이브러리 파일을 가리킨다.HDF는 미국 국가 슈퍼컴퓨팅 응용 센터인 NCSA가 최초로 개발하여 현재 비영리 조직인 HDF팀의 유지 보수 아래 계속 발전하고 있다.현재 유행하는 버전은 HDF5입니다.HDF5는 광범위한 데이터 유형, 유연성, 공통성, 플랫폼 간 확장성, 효율적인 I/O 성능, 거의 무제한(최대 EB)의 단일 파일 스토리지 지원 등 다양한 과학적 데이터 저장 및 작업에 적합한 다양한 기능을 갖추고 있습니다.https://support.hdfgroup.org/HDF5/.
HDF5 패브릭
HDF5 파일은 일반적으로.h5 또는.hdf5는 접두사 이름으로 미리 보기 파일의 내용을 열 수 있는 전문적인 소프트웨어가 필요합니다.HDF5 파일 구조에는 2개의 primary objects: Groups와 Datasets가 있습니다.
Groups는 폴더와 유사합니다. 모든 HDF5 파일은 루트 디렉터리 (root) 그룹'/'입니다. 디렉터리의 용기로 볼 수 있습니다. 그 중에서 하나 이상의 데이터 집합과 다른 그룹을 포함할 수 있습니다.
Datasets는 NumPy의 수조array와 유사하여 수조의 데이터 집합으로 삼을 수 있습니다.
모든 데이터set은 두 부분으로 나눌 수 있습니다. 원시 데이터 데이터values와 메타데이터metadata(a set of data that describes andgives information about other 데이터=>raw 데이터).
+-- Dataset
| +-- (Raw) Data Values (eg: a 4 x 5 x 6 matrix)
| +-- Metadata
| | +-- Dataspace (eg: Rank = 3, Dimensions = {4, 5, 6})
| | +-- Datatype (eg: Integer)
| | +-- Properties (eg: Chuncked, Compressed)
| | +-- Attributes (eg: attr1 = 32.4, attr2 = "hello", ...)
|
위의 구조에서 볼 수 있듯이
+-- /
| +-- group_1
| | +-- dataset_1_1
| | | +-- attribute_1_1_1
| | | +-- attribute_1_1_2
| | | +-- ...
| | |
| | +-- dataset_1_2
| | | +-- attribute_1_2_1
| | | +-- attribute_1_2_2
| | | +-- ...
| | |
| | +-- ...
| |
| +-- group_2
| | +-- dataset_2_1
| | | +-- attribute_2_1_1
| | | +-- attribute_2_1_2
| | | +-- ...
| | |
| | +-- dataset_2_2
| | | +-- attribute_2_2_1
| | | +-- attribute_2_2_2
| | | +-- ...
| | |
| | +-- ...
| |
| +-- ...
|
HDF5 파일은 "/"라는 그룹에서 시작되며, 모든 데이터셋과 다른 그룹은 이 그룹에 포함되어 있으며, HDF5 파일을 조작할 때, 그룹을 명시적으로 지정하지 않은 데이터셋은 기본적으로 "/"아래의 데이터셋을 가리키며, 상대 파일 경로와 유사한 그룹 이름은 "/"에 대한 것입니다.설치
pip install h5py
Python 읽기 및 쓰기 HDF5 파일
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#
# Created by WW on Jan. 26, 2020
# All rights reserved.
#
import h5py
import numpy as np
def main():
#===========================================================================
# Create a HDF5 file.
f = h5py.File("h5py_example.hdf5", "w") # mode = {'w', 'r', 'a'}
# Create two groups under root '/'.
g1 = f.create_group("bar1")
g2 = f.create_group("bar2")
# Create a dataset under root '/'.
d = f.create_dataset("dset", data=np.arange(16).reshape([4, 4]))
# Add two attributes to dataset 'dset'
d.attrs["myAttr1"] = [100, 200]
d.attrs["myAttr2"] = "Hello, world!"
# Create a group and a dataset under group "bar1".
c1 = g1.create_group("car1")
d1 = g1.create_dataset("dset1", data=np.arange(10))
# Create a group and a dataset under group "bar2".
c2 = g2.create_group("car2")
d2 = g2.create_dataset("dset2", data=np.arange(10))
# Save and exit the file.
f.close()
''' h5py_example.hdf5 file structure
+-- '/'
| +-- group "bar1"
| | +-- group "car1"
| | | +-- None
| | |
| | +-- dataset "dset1"
| |
| +-- group "bar2"
| | +-- group "car2"
| | | +-- None
| | |
| | +-- dataset "dset2"
| |
| +-- dataset "dset"
| | +-- attribute "myAttr1"
| | +-- attribute "myAttr2"
| |
|
'''
#===========================================================================
# Read HDF5 file.
f = h5py.File("h5py_example.hdf5", "r") # mode = {'w', 'r', 'a'}
# Print the keys of groups and datasets under '/'.
print(f.filename, ":")
print([key for key in f.keys()], "
")
#===================================================
# Read dataset 'dset' under '/'.
d = f["dset"]
# Print the data of 'dset'.
print(d.name, ":")
print(d[:])
# Print the attributes of dataset 'dset'.
for key in d.attrs.keys():
print(key, ":", d.attrs[key])
print()
#===================================================
# Read group 'bar1'.
g = f["bar1"]
# Print the keys of groups and datasets under group 'bar1'.
print([key for key in g.keys()])
# Three methods to print the data of 'dset1'.
print(f["/bar1/dset1"][:]) # 1. absolute path
print(f["bar1"]["dset1"][:]) # 2. relative path: file[][]
print(g['dset1'][:]) # 3. relative path: group[]
# Delete a database.
# Notice: the mode should be 'a' when you read a file.
'''
del g["dset1"]
'''
# Save and exit the file
f.close()
if __name__ == "__main__":
main()
관련 코드 예h5py 파일 만들기
import h5py
f=h5py.File("myh5py.hdf5","w")
dataset 만들기
import h5py
f=h5py.File("myh5py.hdf5","w")
#deset1 name,(20,) shape,i
d1=f.create_dataset("dset1", (20,), 'i')
for key in f.keys():
print(key)
print(f[key].name)
print(f[key].shape)
print(f[key].value)
출력:dset1
/dset1
(20,)
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
값을 매기다
import h5py
import numpy as np
f=h5py.File("myh5py.hdf5","w")
d1=f.create_dataset("dset1",(20,),'i')
#
d1[...]=np.arange(20)
#
f["dset2"]=np.arange(15)
for key in f.keys():
print(f[key].name)
print(f[key].value)
출력:/dset1
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
/dset2
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
그룹 만들기
import h5py
import numpy as np
f=h5py.File("myh5py.hdf5","w")
# bar
g1=f.create_group("bar")
# bar name dset1,dset2 。
g1["dset1"]=np.arange(10)
g1["dset2"]=np.arange(12).reshape((3,4))
for key in g1.keys():
print(g1[key].name)
print(g1[key].value)
출력:/bar/dset1
[0 1 2 3 4 5 6 7 8 9]
/bar/dset2
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
어떤 키의 데이터를 삭제합니다
#어떤 키를 삭제하고remove를 호출합니다
f.remove("bar")
마지막으로 pandsa에서 HDF5 형식 파일 읽기
import pandas as pd
import numpy as np
# mode r
hdf5 = pd.HDFStore("hello.h5", mode="r")
#
"""
hdfs = pd.read_hdf("hello.h5", key="xxx")
"""
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.