使用h5py 读取和写入hdf和nc文件
文章目录
1 netCDF4创建文件不方便
上次比较系统的介绍了怎么使用netCDF4读取和写入.nc文件。
链接:使用python的netCDF4库读取.nc文件 和 创建.nc文件
但是上次介绍到过,使用netCDF创建.nc文件比较麻烦,比如要写入一个4维的数组,要先定义清楚,每一个维度对应的变量是什么。如下图,水汽q是4维的,分别对应 [时间,垂直层数,纬度,经度]这四个维度,而且还需要先知道变量的具体shape是多少,很麻烦。

2 h5py介绍
2.1 前言
-
.hdf和.nc文件是气象上常用的两种数据格式,存储方式基本一致。
-
无论是 h5py还是netCDF4,都能独自解析这两种格式数据(建议使用netCDF4解析文件)。
-
使用h5py,可以创建 .nc文件,也可以创建.hdf文件
-
h5py安装非常方便,直接pip安装
pip install h5py
2.2 读取文件
2.2.1 可视化软件打开

存在两个文件 d.hdf 和 d.nc。使用可视化软件打开:如上图,两个文件内容和信息完全一致。
2.2.2 解析文件
- h5py打开文件
import h5py
filename = 'D:/d.nc'
#filename = 'D:/d.hdf'
f1 = h5py.File(filename,mode = 'r')
#获取所有变量列表
all_vars = list(f1.keys())
#获取第4个变量的数据,并输出数据类型
data = f1[all_vars[3]][:]
print(type(data))
f1.close()
'''
output:
<class 'numpy.ndarray'>
'''
- netCDF4打开文件
import netCDF4 as nc
filename = 'D:/d.nc'
#filename = 'D:/d.hdf'
f = nc.Dataset(filename,mode = 'r')
#获取所有变量列表
all_vars = list(f.variables.keys())
#获取第4个变量的数据,并输出数据类型
data = f.variables[all_vars[3]][:]
print(type(data))
f.close()
'''
output:
<class 'numpy.ma.core.MaskedArray'>
'''
Attention!
对比上面h5py和netCDF4的输出,我们发现两者输出的数据格式不一样:前者为 数组,后者为 m

本文对比了h5py和netCDF4在处理.hdf和.nc文件上的优劣,详细介绍了如何使用h5py创建和解析这两种文件格式,包括变量、群组的创建及属性设置。并推荐在创建文件时使用h5py,读取文件时使用netCDF4。
最低0.47元/天 解锁文章
4202





