num2date不支持“几个月以来...”

时间:2018-09-21 13:08:40

标签: python netcdf4

您好,我有一个neetcdf4文件,其中包含10年来的月降水量数据。 我想做的是:

  1. 读取文件
  2. 根据经度选择一个子区域
  3. 我需要计算每3年的移动平均值
  4. 绘制结果
dataset = Dataset('test.nc','r',format='NETCDF4')
lons = dataset.variables['lon'][:]
lats = dataset.variables['lat'][:]
times = dataset.variables['time'][:]
times_units = dataset.variables['time'].units
prep_solide = dataset.variables['PREC'][:,:,:]
prec_units =dataset.variables['PREC'].units

dates = num2date(times[:],' months since 1801-01-01 00:00:00')

我一直遇到的错误是

  

ValueError:不支持的时间单位

还有其他方法可以解决此错误吗?

1 个答案:

答案 0 :(得分:1)

您已经注意到num2date函数不支持“月”。老实说,自1800-01-01 00:00:00以来两个月的意义是什么?是1800-03-01 00:00:00还是其他(1个月= 365.25 / 12天,因此还有1800-03-02 02:21:00)?

无论如何,我都会用自己的功能来设定日期。例如,在您的情况下:

dates = [datetime.datetime(1800,1,1)+datetime.timedelta(seconds = 365.25/12*24.0*3600.0*float(val)) for val in times]

由于我不知道您的数据以秒为单位的1个月的值是多少,因此我使用了365.25 / 12。