写入重新打开的NetCDF4文件

问题描述

我正在尝试将数字写入尺寸不受限制的数组中。我创建的文件的结构如下:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...