问题描述
我正在尝试将数字写入尺寸不受限制的数组中。我创建的文件的结构如下:
import netCDF4 as nc4
rootgrp = nc4.Dataset("test.nc",'a',format="NETCDF4")
mgrp= rootgrp.createGroup('Flex')
mgrp.createDimension('pv',None)
mgrp.createDimension('s',4)
a = mgrp.createVariable('fill',"f8",('pv','s'))
rootgrp.close()
现在我正在尝试像这样填充此数组:
while i<10:
f = nc4.Dataset("test.nc",'r+',format="NETCDF4")
fgrp= f.groups['Flex']
fgrp['fill'][i][0] = i
print(fgrp['fill'][i][:])
f.groups['Flex'].variables['fill'][i][3] = i
f.close()
i=i+1
但是我总是收到“尺寸超出范围”错误,即使它告诉我我没有尺寸限制。即使我使用固定100x4尺寸的数组,我仍然会遇到相同的错误。
将感谢您的任何帮助。
解决方法
这是问题所在:
fgrp['fill'][i][0] = i
fgrp['fill'][i]
从'fill'变量中获取第i行。然后,它立即尝试使用[0]
索引到该行,因为该行中没有任何内容,因此会出错。要解决此问题,请分步执行索引编制:
fgrp['fill'][i,0] = i