使用 pynco 包压缩 netCDF 文件

Compressing a netCDF file with the pynco package

我有兴趣使用 pynco 包在 python 中压缩 NetCDF 文件。在命令行中,我通常会使用:

nccopy -d 3 input_file.nc output_file.nc

在 python 中,我尝试了以下方法:

from nco import Nco
Nco.nccopy(input='input_file.nc', output='output_file.nc', options=['-d 1'])

这会产生属性错误 'Nco' has no attribute 'nccopy'pynco 是否支持 nccopy

nccopy 是 netCDF 命令,不是 NCO 命令。然而,ncks 几乎可以做 nccopy 能做的所有事情,还有很多其他的事情。要按照您的示例进行压缩,请尝试

Nco.ncks(input='input_file.nc', output='output_file.nc', options=['-7 -L 1'])

只是为了列出 pynco 的替代方案,您也可以在 python 内使用 cdo 包进行此操作:

from cdo import *
cdo = Cdo()
cdo.copy(input='input.nc',output='output.nc',options='-f nc4 -z zip_7')

您可以选择从轻 (zip_1) 一直到最压缩 (zip_9) 的压缩级别,我通常发现超过级别 4 或 5 并没有太多增益(即额外的尺寸节省非常小)带来很多痛苦(命令需要更长的时间!)。我认为如果输入是 netCDF4 标准,可能不需要 -f nc4 来确保 netCDF4 输出,但无论如何放它也无妨。

你可以用

安装cdo
pip3 install cdo