【问题标题】:Write into re-opend NetCDF4 file写入重新打开的 NetCDF4 文件
【发布时间】:2020-12-19 16:46:42
【问题描述】:

我正在尝试将数字写入具有无限维度的数组。我创建的文件结构如下:

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 维度的数组,我仍然会遇到同样的错误。

不胜感激。

【问题讨论】:

  • 你能发布完整的回溯吗?从您的问题中不清楚是哪一行产生了错误。

标签: arrays python-3.x netcdf4


【解决方案1】:

这行是问题所在:

fgrp['fill'][i][0] = i

fgrp['fill'][i] 从 'fill' 变量中获取第 i 行。然后它立即 尝试使用[0] 对该行进行索引,但由于该行中没有任何内容而出错。要解决此问题,请改为一步完成索引:

fgrp['fill'][i, 0] = i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多