python - num2date 不支持 'months since...'

标签 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: unsupported time units

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

最佳答案

正如您已经注意到的,num2date 函数不支持“months”。老实说,自 1800-01-01 00:00:00 以来的 2 个月到底是什么意思?是 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。

关于python - num2date 不支持 'months since...',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52444502/

相关文章:

python - 在不修改sys.path或第三方软件包的情况下,在Python软件包中导入供应商依赖性

python netCDF4 在 Mac 操作系统上突然停止工作

Netcdf 平均多个 .nc 文件时的时间变量

python - 我在 GEKKO 中遇到循环约束问题

python - 如何在 Python 中使用正则表达式删除单词中的多个后续字符?

python - celery 的 `max_retries` 被命中后会发生什么?

python - netCDF 转换为 NaN 以用于条件

python - 正则表达式分割字符串,不包括可转义引号之间的分隔符

Python line_profiler 找不到模块

netcdf - 使用气候数据运营商 (CDO) 的每日数据的月雨天总和