本文介绍使用 xarray.decode_cf() 自动解析 netcdf 中的 cftime 编码时间,并通过 astype(int) 一步向量化转换为毫秒级 unix 时间戳,避免显式循环,兼顾精度与性能。
在处理气象或地球科学领域的 NetCDF 数据时,时间维度常以 cftime 编码形式存储(如 “days since 2002-01-01T00:00:00″),其本质是相对于参考时刻的数值偏移量(浮点数),而非原生 datetime。直接对这类数组做 Unix 时间戳转换时,若采用手动遍历 + cftime.num2date() + datetime.timestamp() 的链式调用,不仅代码冗长,还会因 Python 循环严重拖慢性能——尤其面对数万甚至百万级时间点时。
所幸,xarray 提供了开箱即用的自动化解决方案:xarray.decode_cf() 能智能识别变量的 units 和 calendar 属性(需确保 units 小写,如 “days since…”,而非 “Days since…”),并批量、向量化地将其解码为 datetime64[ns] 类型的 DataArray,完全规避循环。
解码后,获取毫秒级 Unix 时间戳仅需一行向量化操作: