Я использую Scientific.IO.NetCDF для чтения данных NetCDF в Python. Я пытаюсь прочитать 4d 32-битную переменную с размером (366,30,476,460), но в итоге я получаю нули в моем ndarray. Как ни странно, если я читаю только 3D-данные (1,30,476,460), возвращаемые значения в порядке.Чтение 4d var из файла NetCDF в Python
Это то, что я пытаюсь сделать:
from Scientific.IO.NetCDF import NetCDFFile as Dataset
from collections import namedtuple
# Define output data structure as a named tuple
Roms_data=namedtuple('Roms_data','Ti Tf Nt U V W Zeta')
# Open the NetCDF file for reading.
ncfile = Dataset(data_file,'r')
if Tstart==-1:
ti=0
tf=NTsav-1
else:
ti=Tstart-1
tf=Tend-1
try:
udata = ncfile.variables['u'][:]
print str(udata.shape)
except:
print ' Failed to read u data from '+data_file
В «[:]» означает, что я читаю всю 4d переменную «и» в качестве ndarray называется udata. Это не работает, и удата полна нулей. Однако, если я делаю:
try:
udata = ncfile.variables['u'][0,:,:,:]
print str(udata.shape)
except:
print ' Failed to read u data from '+data_file
затем «udata», который теперь 3d ndarray имеет значения, которые он должен прочитать из файла NetCDF.
Любая помощь? Заранее спасибо.
Если возможно, одно из предложений может заключаться в том, чтобы поместить ваш файл netCDF в dropbox (или какую-то эквивалентную услугу), чтобы мы могли экспериментировать с ним. –