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);