我的目标是导入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'
非常感谢任何想法,指南或提示!
答案 0 :(得分:0)
我怀疑问题在于维度和变量之间的混淆。在像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
的变量中,最后一行给出与您类似的错误。