调用 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
的变量中,最后一行给出了与您的类似的错误。
我的目标是导入 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
的变量中,最后一行给出了与您的类似的错误。