我正在使用 Scientific.IO.NetCDF 将 NetCDF 数据读入 Python。我正在尝试读取大小为 (366,30,476,460) 的 4d 32 位变量,但最终在我的 ndarray 中得到零。奇怪的是,如果我只读取 3d 数据(1,30,476,460),返回值是可以的。
这就是我想要做的:
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 变量“u”读入一个名为 udata 的 ndarray。这不起作用,并且 udata 充满了零。但是,如果我这样做:
try:
udata = ncfile.variables['u'][0,:,:,:]
print str(udata.shape)
except:
print ' Failed to read u data from '+data_file
然后现在是 3d ndarray 的“udata”具有它应该从 NetCDF 文件中读取的值。
有什么帮助吗?提前致谢。