아래의 최소 예제는 어떻게 netcdf 파일에 문자열을 쓰려고하는지 보여줍니다. 단일 문자열은 예상대로 작동합니다 (var1). 그러나 다중 문자열 (var2)에서 첫 번째 문자 만 고려됩니다.python으로 netcdf에 multicharacter 문자열 netCDF4
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()
두 번째 차원을 사용하여, 다음과 같이 작동 얻을 수 있습니다 : 나는 netCDF4에 대한 상대 안돼서
['a', 'b'] ['a' 'b']
['aa', 'bb'] ['aa' 'bb']