我需要从 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”
有谁知道如何解决这个问题吗? 非常感谢!
您可以强制
num2date
为您提供 Python datetime
对象:
time = netCDF4.num2date(data.variables['time'][:], data.variables['time'].units,
only_use_python_datetimes=True)
请参阅 cftime
的
docs(这是 netCDF4 在后台使用的内容)以获取更多信息。
嗯...我尝试过 only_use_python_datetimes=True;单独并与 only_use_cftime_datetimes=False 一起使用;我仍然得到“cftime._cftime.DatetimeGregorian”作为回报,而不是 python DateTime。 Windows、Python 3.12、netCDF4 1.7.1.post2。 (抱歉 - 没有足够的声誉来发表评论)。