本文笔记来自HDF5视频教程,属于浓缩通俗版。
HDF5是干嘛的
想象一下,一个项目的各种数据,不论是文本格式,还是数据格式的,全都堆在一个excel里,能通过Python命令行调用,从而可以做出不同的“数据透视图”,以及做其他各种跨表格的自动化骚操作。而且这几个excel运行速度特别快,放的数据量特别大,电脑怎么用都不会卡。
HDF5实现的就是这个理想。
HDF5解决问题的方式:
简单的说,就是给每个“矩阵数据(表格)”的文件,提供自动化“加描述”,“打标签”的功能。然后就可以魔法了
所以,
Datasets,
Attributes,
Groups,就是HDF5的基本数据模型。
代码调用
Datasets
的方式
摘要:简单说,跟“读csv文件到pandas然后操作”的流程差不多
(用的时候问AI写就行了)
两个小概念
shape
描述矩阵形状的。e.g.3维矩阵就是描述长宽高的, dset.shape==(5,10,7)
datatype
int,float,string那些。在dataset创建的时候就固定好了
具体调用dataset的步骤:
简单说,跟“读csv文件到pandas然后操作”的流程差不多(用的时候问AI写就行了)。区别在于文件后缀是.hdf5。
示例:


HDF5 View的工具
用来看数据内容的。类似于Matlab看矩阵的那个工具
处理
Attributres
的方式
LX摘要:这段是唯一要人肉理解的地方。


处理
Groups
的方式
用法就跟命令行增删改
「文件夹」差不多
(可以用的时候问AI)
Links的概念
相当于「快捷方式」。
快捷方式可以指向文件,也可以指向文件夹。同样,LInks在HDF5里面,可以指向
Datasets,也可以指向
Groups
Path的概念
相当于Linux语境里「Path」(文件路径)的概念。
就像~/.bashrc,~/temp/../bashrc, /users/xxx/home/.bashrc,是不同的文件路径,都指向同一个文件。
在HDF5的语境里,path的意思一样,说的也是定位到文件的路径。
Dictionary
不仅能用矩阵的方式访问数据,也能用dictionary的方式。用的时候问AI举例就行了。
Partial I/O
用法和numpy的
Slicing(
读列,读行数据)差不多。
Compound Datatype
对于一个Component Datatype的
Datasets
,简单理解成一个excel数据文件就行了。要点在于,每一列的数据类型(string, int,etc)可以不一样。
Compound Datatype意思类似C语言里的Struct,把不同datatype(e.g.string,int)放到一个文件里. 这个概念在numpy里面的对应概念是structured array
三种数据存储模式
Continous: 隔行扫描式存储。因此对于1维数据的读写效率很高。
Chunked: 块存储。如果性能好的话,对内存的要求高。
Special Layout - Compact
Special Layout - External
数据压缩
HDF5提供的压缩功能,不用每次IO前后都做压缩解压操作,比较方便。具体到数据多的时候再看
社区的命令行工具
需要用的时候再看
