调用 NetCDF 文件中的维度时出现 KeyError

KeyError when calling on dimension in NetCDF file

我的目标是导入 NetCDF 文件并提取存储在其中的基础变量。我一直在关注这个 guide

到目前为止,这是我的代码:

from netCDF4 import Dataset
import numpy as np

fileName = 'LES_cloud_fields.nc.cdf'
fdata = Dataset(fileName, 'r', format="NETCDF4")
print(fdata.dimensions)
print(fdata.variables['nz'][:])
fdata.close()

我收到错误:KeyError: 'nz'

如有任何想法、指南或提示,我们将不胜感激!

我怀疑问题出在维度和变量之间的混淆。在像 LES 这样的(大气)模型中,同时看到名为 z 的维度和变量(或者开发人员决定使用的任何名称)是很常见的,但情况并非总是如此,并且关于维度的信息(包含实际高度水平的变量)可以不同地命名。考虑这个最小的例子:

from netCDF4 import Dataset
import numpy as np

f = Dataset('file.nc', 'w')
dim_z = f.createDimension('z', 10)
var_z = f.createVariable('z', 'f4', ('z', ))
var_z[:] = np.arange(10)

print(f.dimensions)         # output: OrderedDict([('z', ....
print(f.variables['z'][:])  # output: [ 0.  1.  2.  3.  4.  ...

这可能是您期望发生的情况:有一个维度 z,它也可以作为变量使用。但是如果开发人员决定做类似的事情:

f = Dataset('file.nc', 'w')
dim_z = f.createDimension('z', 10)
var_z = f.createVariable('height', 'f4', ('z', ))
var_z[:] = np.arange(10)

print(f.dimensions)         # output: OrderedDict([('z', ....
print(f.variables['z'][:])  # output: KeyError: 'z'

维度名为 z,但值存储在名为 height 的变量中,最后一行给出了与您的类似的错误。