netCDF4阅读笔记

建立、打开、关闭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官网

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值