【发布时间】:2017-06-21 02:16:38
【问题描述】:
我正在 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']
那么秘诀是什么?
【问题讨论】:
-
下面的问题不是关于编写字符串数组,而是关于如何正确编写
flag_meanings属性。也许修改标题和问题以反映这一点;这对于其他有相同问题或对编写字符串数组有真正疑问的人很有用。 -
对于那些真正想要编写字符串数组的人,请使用
np.array(["stratiform", "convective"], np.str),这将导致array(['stratiform', 'convective'], dtype='<U10')。注意:netcdf4-python 也接受np.str和str作为Variabledatatype,所以这不仅适用于属性。