我正在尝试从Python中的hdf5文件读取数据。我可以使用读取hdf5文件h5py
,但无法弄清楚如何访问文件中的数据。
我的密码
import h5py
import numpy as np
f1 = h5py.File(file_name,'r+')
这可以正常工作并读取文件。但是,如何访问文件对象内部的数据f1
?
我正在尝试从Python中的hdf5文件读取数据。我可以使用读取hdf5文件h5py
,但无法弄清楚如何访问文件中的数据。
import h5py
import numpy as np
f1 = h5py.File(file_name,'r+')
这可以正常工作并读取文件。但是,如何访问文件对象内部的数据f1
?
hdf5
从一个文件中的不同hdf
文件?我有hdf
(它们有几个图像带),但是我不知道如何打开它们。
Answers:
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])
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 docs。
对于您的应用程序,以下内容可能很重要:
另请参阅:数据序列化格式的比较
如果您想寻找一种制作配置文件的方法,则可能需要阅读我的短文《Python中的配置文件》。
f[key].value
h5py
2.1版开始:“该属性Dataset.value
可追溯至h5py 1.0,已弃用,并将在以后的版本中删除。此属性将整个数据集转储到NumPy数组中。.value
应使用mydataset[...]
或将代码更新为使用NumPy索引。mydataset[()]
作为适当的。”
读取文件
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()
for key in data.keys(): print(key) #Names of the groups in HDF5 file.
可以替换为list(data)
data.visit(print)
data.close()
最后需要。
这是我刚刚编写的一个简单函数,它读取由keras中的save_weights函数生成的.hdf5文件,并返回包含图层名称和权重的字典:
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。
尚未进行全面测试,但可以为我完成工作。
使用以下代码读取数据并将其转换为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)
from keras.models import load_model
h= load_model('FILE_NAME.h5')
您需要做的是创建一个数据集。如果您查看快速入门指南,它将显示您需要使用文件对象来创建数据集。这样,f.create_dataset
您就可以读取数据了。在docs中对此进行了解释。