建立、打开、关闭netCDF4文件
mode = 'w' or 'r' or 'a',w write r read a alter.
from netCDF4 import Dataset
rootgrp = Dataset("test.nc", mode = "w", format="NETCDF4")
群组
>>> rootgrp = Dataset("test.nc", "a")
>>> fcstgrp = rootgrp.createGroup("forecasts")
>>> analgrp = rootgrp.createGroup("analyses")
>>> print(rootgrp.groups)
{'forecasts': <class 'netCDF4._netCDF4.Group'>
group /forecasts:
dimensions(sizes):
variables(dimensions):
groups: , 'analyses': <class 'netCDF4._netCDF4.Group'>
group /analyses:
dimensions(sizes):
variables(dimensions):
groups: }
没懂作用
Dimensions
纬度包括名字、长度,netCDF4可使用不限长度、允许修改的纬度
level = rootgrp.createDimension("level", None)
输出数据集里面的纬度信息
for dimobj in rootgrp.dimensions.values():
print(dimobj)
Variables
times = rootgrp.createVariable("time","f8",("time",))
temp = rootgrp.createVariable("temp","f4",("time","level","lat","lon",))
数据类型指向器:f/i/u/s 4/8 ,第三个:dimensions也可定义为变量,temp四维向量?
变量存储在字典里,通过 print(dataset.variables)查询
Attrubutes属性
还没感到用处
数据写入、检索(retrieve)
相比numpy,netCDF4可以任意修改 不限长度对象objects的尺寸。
切片轨则
tempdat = temp[::2, [1,3,6], lats>0, lons>0]
时间处理
num2date, date2num
>>> # fill in times.
>>> from datetime import datetime, timedelta
>>> from cftime import num2date, date2num
>>> dates = [datetime(2001,3,1)+n*timedelta(hours=12) for n in range(temp.shape[0])]
>>> times[:] = date2num(dates,units=times.units,calendar=times.calendar)
>>> print("time values (in units {}):\n{}".format(times.units, times[:]))
time values (in units hours since 0001-01-01 00:00:00.0):
[17533104. 17533116. 17533128. 17533140. 17533152.]
>>> dates = num2date(times[:],units=times.units,calendar=times.calendar)
>>> print("dates corresponding to time values:\n{}".format(dates))
[cftime.DatetimeGregorian(2001, 3, 1, 0, 0, 0, 0, has_year_zero=False)
cftime.DatetimeGregorian(2001, 3, 1, 12, 0, 0, 0, has_year_zero=False)
cftime.DatetimeGregorian(2001, 3, 2, 0, 0, 0, 0, has_year_zero=False)
cftime.DatetimeGregorian(2001, 3, 2, 12, 0, 0, 0, has_year_zero=False)
cftime.DatetimeGregorian(2001, 3, 3, 0, 0, 0, 0, has_year_zero=False)]
问题:拼接hdf数据?MFDatase 参考在python中使用MFDataset组合netcdf文件 - 问答 - Python中文网
文章参考netCDF4官网