hdf5存储

pandas区别于numpy,主要数据结构是DataFrame,是具有行列索引的二维数组,而numpy单单是数组,无法获知每一行一列是什么。

hdf5存储三维数据

每一个key值(Dataset)可以对应存储一个多维数组

【python】利用h5py存储数据

两类容器:group & dataset

group类似文件夹,字典。 dataset是数据集,类似数组

支持更多的对外透明的存储特征,数据压缩,误差检测,分块传输

group下面可以是group,也可以是dataset

只能储存纯粹的数据,不能储存DataFrame, Panel等东西,如果要用使用 to_hdf


import h5py

读:

f = h5py.File(file, mode='r')

dset = f['mydataset']

写:

f = h5py.File(file, mode='w')

dset = f.create_dataset(name, dataOrSize, dtype, )

可选项:

chunks: True自动分块, 如果手动分块则输入元组

高级特性:

hdf5文件本身大小没有限制

一个dataSet最多32维, 每个维最多2^64个值


a = f['data'][:]                    #取出主键为data的所有的键值


HDF5 不分块的时候 为连续存储方式

例如三维数组 4X5X6

存储数据为一长条 4个 5X6  第一行6个 第二行6个 这样顺序连接成长条 。

python和matlab不一样

100X64X48

在python中认为是100个 64X48数据

在matlab中认为是48个 100X64

分块存储的好处是为了后续继续向数据集中存储

怎么写入 https://www.jianshu.com/p/fc144bae3734

https://ww2.mathworks.cn/help/matlab/ref/h5write.html

https://www.jianshu.com/p/ae12525450e8

h5create('162QAM.hdf5', '/X',[2, 1024, inf],'Datatype','double','ChunkSize',[2,1024,50]),定义分块和inf

h5write('162QAM.hdf5', '/X',datax',[1,1,i],[2,1024,1]);   后面为起始位置,size(data)

未分块

h5create('162QAM.hdf5', '/Y',[24, num_samples],'Datatype','int64')

datay = zeros(24,num_samples);

datay(24,:)=1;

h5write('162QAM.hdf5', '/Y',datay);

你可能感兴趣的:(hdf5存储)