我正在python中创建一个netcdf文件,并希望将“flag_values”和“flag_meanings”属性分配给其中一个变量。变量名称为'cs',flag_values应为(0,1),flag_meanings应为('STRATIFORM','CONVECTIVE')。
要在python中进行这些分配,我使用了:
cs.flag_values = numpy.array((0,1))
cs.flag_meanings = numpy.array(['STRATIFORM','CONVECTIVE'])
'flag_values'赋值工作正常,但'flag_meanings'赋值给了我两个输入值的连接字符串,我无法弄清楚如何将字符串作为单独的实体。这是输出文件中ncdump的一部分:
cs:flag_values = 0L, 1L ;
cs:flag_meanings = "STRATIFORMCONVECTIVE" ;
当我尝试创建一个字符串数组并打印它时,我没有问题:
>>> a = np.array(['STRATIFORM','CONVECTIVE'])
>>> print a
['STRATIFORM' 'CONVECTIVE']
那么秘密是什么?
答案 0 :(得分:0)
我认为netCDF4仅支持字符串数组 - 在创建文件时是否使用了正确的模块和正确的标志。您想使用netcdf4-python模块(https://github.com/Unidata/netcdf4-python),您需要将文件创建为:
from netCDF4 import Dataset
nc = Dataset('test.nc', 'w', format='NETCDF4')
NETCDF4应该是默认格式,但是如果它被覆盖(或者你没有使用netcdf4库),我认为不支持字符串数组。
答案 1 :(得分:0)
我知道这是一篇旧帖子,但供将来参考。
尝试,
cs.flag_meaning = "Convective, Stratiform"
答案 2 :(得分:0)
根据CF-conventions (Section 3.5, “Flags”),flag_meanings
是一个字符串,其中的含义以空格(空格)分隔:
flag_meanings属性是一个字符串,其值是描述性单词或短语的空白分隔列表,每个标志值一个。每个单词或短语应由字母数字集和以下五个字符组成:' _',' - ','。',' +',' @'。如果使用多词短语来描述标志值,则短语中的单词应与下划线连接。
所以定义应该是
cs.flag_meaning = "convective stratiform"