ProgramingTip

Python에서 HDF5 파일을 읽는 방법

bestdevel 2020. 12. 15. 19:38
반응형

Python에서 HDF5 파일을 읽는 방법


Python의 hdf5 파일에서 데이터를 발견합니다. 을 사용하여 hdf5 파일을 읽을 수 h5py있는 파일 내의 데이터에 액세스하는 방법을 알 수 없습니다.

내 코드

import h5py    
import numpy as np    
f1 = h5py.File(file_name,'r+')    

이것은 작동하고 파일을 읽습니다. 하지만 파일 내부의 내부 데이터에 어떻게 액세스 할 수 f1있습니까?


HDF5 읽기

import h5py
filename = 'file.hdf5'

with h5py.File(filename, 'r') as f:
    # List all groups
    print("Keys: %s" % f.keys())
    a_group_key = list(f.keys())[0]

    # Get the data
    data = list(f[a_group_key])

HDF5 쓰기

#!/usr/bin/env python
import h5py

# Create random data
import numpy as np
data_matrix = np.random.uniform(-1, 1, size=(10, 3))

# Write data to HDF5
with h5py.File('file.hdf5', 'w') as data_file:
    data_file.create_dataset('group_name', data=data_matrix)

자세한 내용은 h5py 문서 를 참조하십시오.

대안

애플리케이션의 경우 다음이 중요 할 수 있습니다.

  • 다른 프로그래밍 언어에 의한 지원
  • 읽기 / 쓰기 성능
  • 선택할 함 (파일 크기)

참고 항목 : 데이터화 형식 비교

구성 파일을 만드는 방법을 찾고 있습니다. Python의 구성 파일 을 읽는 것이 좋습니다.


Pandas를 사용할 수 있습니다.

import pandas as pd
pd.read_hdf(filename,key)

파일 읽기

import h5py

f = h5py.File(file_name, mode)

존재하는 HDF5 그룹을 인쇄하여 파일 구조 연구

for key in f.keys():
    print(key) #Names of the groups in HDF5 file.

데이터 추출

#Get the HDF5 group
group = f[key]

#Checkout what keys are inside that group.
for key in group.keys():
    print(key)

data = group[some_key_inside_the_group].value
#Do whatever you want with data

#After you are done
f.close()

.hdf5 파일의 내용을 배열 할 수 있습니다. 다음과 같이 할 수 있습니다.

> import numpy as np 
> myarray = np.fromfile('file.hdf5', dtype=float)
> print(myarray)

다음은 keras의 save_weights 함수에 의해 생성 된 .hdf5 파일을 읽고 레이어 이름과 가중치가있는 dict를 반환하는 간단한 함수입니다.

def read_hdf5(path):

    weights = {}

    keys = []
    with h5py.File(path, 'r') as f: # open file
        f.visit(keys.append) # append all keys to list
        for key in keys:
            if ':' in key: # contains data if ':' in key
                print(f[key].name)
                weights[f[key].name] = f[key].value
    return weights

https://gist.github.com/Attila94/fb917e03b04035f3737cc8860d9e9f9b .

철저히 테스트하지는 않았지만 나를 위해 일합니다.


해야 할 일은 데이터 세트를 만드는 것입니다. 빠른 시작 가이드를 살펴보면 데이터 세트를 만들기 위해 파일 객체를 사용해야 함을 보여줍니다. 그래서 f.create_dataset데이터를 읽을 수 있습니다. 이것은 문서에 설명되어 있습니다.


아래 코드를 사용하여 데이터를 읽고 numpy 배열로 변환하십시오.

import h5py
f1 = h5py.File('data_1.h5', 'r')
list(f1.keys())
X1 = f1['x']
y1=f1['y']
df1= np.array(X1.value)
dfy1= np.array(y1.value)
print (df1.shape)
print (dfy1.shape)

참조 URL : https://stackoverflow.com/questions/28170623/how-to-read-hdf5-files-in-python

반응형