2014-05-21 2 views
1

아래의 최소 예제는 어떻게 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'] 

답변

1

을하지만 할 때 문자열 처리 NetCDF4 유틸리티 메서드를 사용했습니다 netCDF4.stringtochar(strs2) and netCDF.chartostring(strs2)

0

두 번째 차원을 추가하지 않으려면 'S1'을 'S2'로 변경하십시오. 더 긴 문자열을 N 자로 사용하려면 'SN'을 사용하십시오.

관련 문제