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

2024-10-01 00:28:25 发布

您现在位置:Python中文网/ 问答频道 /正文

下面这个最小的示例显示了我如何尝试将字符串写入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()

输出如下所示

^{pr2}$

我试图添加第二个维度,但这也没有给出期望的结果。 有人能解决这个问题吗?在

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

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']

Tags: 字符串importds字符aanetcdf4printbb
2条回答

如果不想添加第二个维度,只需将“S1”更改为“S2”。如果要使用包含N个字符的更长字符串,请使用“SN”。在

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

相关问题 更多 >