繁体   English   中英

使用python netCDF4将多字符字符串转换为netcdf

[英]multicharacter strings to netcdf with python netCDF4

下面的最小示例显示了我如何尝试将字符串写入netcdf文件。 单个字符串按预期方式工作(var1)。 但是,在多字符串(var2)中,仅考虑第一个字符。

from netCDF4 import Dataset

strs1 = ['a', 'b']
strs2 = ['aa', 'bb']

ds = Dataset('test.nc','w')
ds.createDimension('x', 2)
var1 = ds.createVariable('var1', 'S1', (u'x',))
var1[:] = strs1
print strs1,var1[:]
var2 = ds.createVariable('var2', 'S1', (u'x',))
var2[:] = strs2
print strs2,var2[:]
ds.close()

输出看起来像这样

['a', 'b'] ['a' 'b']
['aa', 'bb'] ['a' 'b']

我尝试添加第二个维度,但这也没有得到期望的结果。 有人对此问题有解决方案吗?

编辑:使用第一个答案,我可以使用第二个维度,使其按如下方式工作

import netCDF4
import numpy as np

strs1 = ['a', 'b']
strs2 = ['aa', 'bb']

ds = netCDF4.Dataset('test.nc','w')
ds.createDimension('x', 2)
ds.createDimension('strlen', 2)
var1 = ds.createVariable('var1', 'S1', (u'x',))
var1[:] = strs1
print strs1,var1[:]
var2 = ds.createVariable('var2', 'S1', (u'x',u'strlen'))
var2[:] = netCDF4.stringtochar(np.array(strs2))
print strs2,netCDF4.chartostring(var2[:])
ds.close()

提供以下输出:

['a', 'b'] ['a' 'b']
['aa', 'bb'] ['aa' 'bb']

我是netCDF4的相对新手,但是在处理字符串时,我使用了netCDF4实用程序方法netCDF4.stringtochar(strs2) and netCDF.chartostring(strs2

如果您不想添加第二个尺寸,只需将“ S1”更改为“ S2”。 如果要使用N个字符甚至更长的字符串,请使用'SN'。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM