2016-12-16 3 views
1

python netcdf4 라이브러리에서 netcdf4 읽기 스크립트 용 테스트 데이터 세트를 작성하고 싶습니다. 그러나 원하는 출력을 생성 할 수 없습니다.NetCDF4 python으로 numpy 다차원 배열 만들기

이 현재 나의 쓰기 스크립트입니다

# write file 
varlist = ['ABC123', 'DEF456', 'GHI789'] 
varlist = np.array([[i for i in k] for k in varlist], dtype='S1') 
with Dataset(indexfile, 'w', format='NETCDF4') as file: 
    file.createDimension('vars', [3,6]) 
    vars_list = file.createVariable('vars', 'S1', (u'vars',)) 
    vars_list[:] = varlist 

그러나 이것은 TypeError 반환

TypeError: an integer is required

어떻게 내 입력을 변경하거나 원하는 결과를 얻을 수있는 스크립트를 작성해야합니까?

답변

0

한 번에 하나의 치수를 만들어야합니다. 이것은이 파일이 생성

import numpy as np 
from netCDF4 import Dataset 

indexfile = 'data.nc' 

varlist = ['ABC123', 'DEF456', 'GHI789'] 
varlist = np.array([[i for i in k] for k in varlist], dtype='S1') 
with Dataset(indexfile, 'w', format='NETCDF4') as nc_file: 
    nc_file.createDimension('x', 3) 
    nc_file.createDimension('y', 6) 
    vars_list = nc_file.createVariable('vars', 'S1', ('x', 'y')) 
    vars_list[:] = varlist 

:

$ ncdump data.nc 

netcdf data { 
dimensions: 
    x = 3 ; 
    y = 6 ; 
variables: 
    char vars(x, y) ; 
data: 

vars = 
    "ABC123", 
    "DEF456", 
    "GHI789" ; 
} 

다시 파이썬을 읽기를 너무 작동합니다

with Dataset(indexfile, 'r', format='NETCDF4') as nc_file: 
    print(nc_file.variables['vars'][:]) 

[[b'A' b'B' b'C' b'1' b'2' b'3'] 
[b'D' b'E' b'F' b'4' b'5' b'6'] 
[b'G' b'H' b'I' b'7' b'8' b'9']] 
예를 들어, xy이 크기 전화