netCDF Python:如何获取变量属性的数据类型?

3

我正在使用netCDF4 Python包,我知道getattr()函数可以获取数据集中变量的属性值,例如:

root = Dataset(file_name,'r')
for var in root.variables.values():
    print 'attrs of this variable:',var.ncattrs()
    for attr in var.ncattrs():
    print '<<attr name>> =', attr
    print '<<attr value>> =',getattr(var,attr)

通过上述代码,我可以成功获取属性的名称/值对。现在我想获取属性的数据类型(int、float等),但我找不到这样的方法/函数,请问有人知道吗?我知道netCDF C包中有这样的API。


2
Pythonзљ„type()е‡Ѕж•°дёЌдјљжњ‰её®еЉ©еђ—пјџ - shad0w_wa1k3r
2个回答

2
nci = netCDF4.Dataset(file_name,'r')
g_attdict = nci.__dict__
for k,v in g_attdict.iteritems():
  print k, type(v)      

示例输出:

comment <type 'unicode'>
mooring_site_desc <type 'unicode'>
breakout_id <type 'numpy.int32'>
ending_julian_day_number <type 'numpy.float64'>
long_name <type 'unicode'>  
...

1
如果您 print 变量,数据类型将被列出。要获取 numpy 的 dtype,请使用 .dtype 属性:
for var in root.variables.values():
    print var
    print var.dtype

1
我的问题是关于变量属性的数据类型,而不是变量的数据类型。 - oldnavy
在这种情况下,我不确定我理解你的问题。对于我通常处理的netCDF文件,属性都是字符串。 - desired login
我也有这个问题。使用Python NetCDF4 API似乎没有这种能力,但Java NetCDF4有。 - Eric Bridger
@ashish-nitin-patil 是正确的。它确实可以。请查看新答案。 - Eric Bridger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接