Python3.7 函数从 netCDF4 的时间步长绘制日期时间

问题描述 投票:0回答:2

我需要从 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)

enter image description here

我需要将 x.axis 从时间步数转换为日期(2014-01-01 ....)

我尝试将它们转换为

time = netCDF4.num2date(data.variables['time'][:],data.variables['time'].units)

但是,当我绘制它时

plot(time,bg)

我收到了这个错误消息

TypeError:float() 参数必须是字符串或数字,而不是“cftime._cftime.DatetimeGregorian”

有谁知道如何解决这个问题吗? 非常感谢!

python date converters netcdf4 timestep
2个回答
0
投票

您可以强制

num2date
为您提供 Python
datetime
对象:

time = netCDF4.num2date(data.variables['time'][:], data.variables['time'].units,
    only_use_python_datetimes=True)

请参阅 cftime

docs
(这是 netCDF4 在后台使用的内容)以获取更多信息。


0
投票

嗯...我尝试过 only_use_python_datetimes=True;单独并与 only_use_cftime_datetimes=False 一起使用;我仍然得到“cftime._cftime.DatetimeGregorian”作为回报,而不是 python DateTime。 Windows、Python 3.12、netCDF4 1.7.1.post2。 (抱歉 - 没有足够的声誉来发表评论)。

© www.soinside.com 2019 - 2024. All rights reserved.