首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python netCDF4 -将新变量添加到现有文件中,并更改其形状

Python netCDF4 -将新变量添加到现有文件中,并更改其形状
EN

Stack Overflow用户
提问于 2019-01-15 06:44:56
回答 1查看 1.6K关注 0票数 2

我有两个netCDF文件:file1.ncfile2.nc,唯一的区别是file1.nc包含一个变量'rho‘,我想通过修改变量将其附加到file2.nc中。原始file2.nc中不包含'rho‘。我使用的是Python模块netCDF4。

代码语言:javascript
复制
import netCDF4 as ncd  
file1data=ncd.Dataset('file1.nc')

file1data.variables['rho']

<class 'netCDF4._netCDF4.Variable'> float64 rho(ocean_time, s_rho, eta_rho, xi_rho)
    long_name: density anomaly
    units: kilogram meter-3
    time: ocean_time
    grid: grid
    location: face
    coordinates: lon_rho lat_rho s_rho ocean_time
    field: density, scalar, series
    _FillValue: 1e+37 
unlimited dimensions: ocean_time 
current shape = (2, 15, 1100, 1000) 
filling on

所以rho的形状是2,15,1100,1000,但在添加到file2.nc时,我只想添加ro1,15,1100,1000,即只添加第二个时间步长的数据。这将导致file2.nc中的'rho‘的形状为15,1100,1000。但我一直无法做到这一点。

我一直在尝试这样的代码:

代码语言:javascript
复制
file1data=ncd.Dataset('file1.nc')
rho2=file1data.variables['rho']
file2data=ncd.Dataset('file2.nc','r+') # I also tried with 'w' option; it does not work
file2data.createVariable('rho','float64')
file2data.variables['rho']=rho2  # to copy rho2's attributes
file2data.variables['rho'][:]=rho2[-1,15,1100,1000] # to modify rho's shape in file2.nc
file2data.close()

这里我漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-15 22:15:09

您尚未在第二个netCDF文件中指定变量rho的大小。

您正在做的是:

代码语言:javascript
复制
file2data.createVariable('rho','float64')

当它被认为是

代码语言:javascript
复制
file2data.createVariable('rho','float64',('ocean_time', 's_rho', 'eta_rho', 'xi_rho'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54190315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档