Python3.7 函数从 netCDF4 的时间步长绘制日期时间
Posted
技术标签:
【中文标题】Python3.7 函数从 netCDF4 的时间步长绘制日期时间【英文标题】:Python3.7 function to plot datetime from timestep of netCDF4 【发布时间】:2021-03-19 17:56:19 【问题描述】:我需要从 netcdf 文件中绘制 bg 变量,但是时间表示为时间步长。 我阅读了 netcdf 文件:
data =netCDF4.Dataset (r'D:\Users\NOAA\\CT2019B.molefrac_components_glb3x2_2014-2018.nc')
time = data.variables['time'][:]
bg = data.variables['bg']
时间是:
masked_array(data=[5114.0625, 5114.0625, 5114.1875, ..., 6939.8125,
6939.9375, 6939.9375],
mask=False,
fill_value=1e+20)
单位:
'days since 2000-1-1 00:00:00'
plot(time,bg)
我需要将 x.axis 从时间步数转换为日期 (2014-01-01 ....)
我试图将它们转换为
time = netCDF4.num2date(data.variables['time'][:],data.variables['time'].units)
但是,当我绘制它时
plot(time,bg)
我收到了这个错误信息
TypeError: float() 参数必须是字符串或数字,而不是 'cftime._cftime.DatetimeGregorian'
有谁知道如何解决这个问题? 非常感谢!
【问题讨论】:
【参考方案1】:您可以强制 num2date
给您 Python datetime
对象:
time = netCDF4.num2date(data.variables['time'][:], data.variables['time'].units,
only_use_python_datetimes=True)
有关更多信息,请参阅 docs 以获取 cftime
(netCDF4 在后台使用)。
【讨论】:
以上是关于Python3.7 函数从 netCDF4 的时间步长绘制日期时间的主要内容,如果未能解决你的问题,请参考以下文章