【问题标题】:Replacing a variable inside a netCDF file替换 netCDF 文件中的变量
【发布时间】:2018-03-16 06:34:19
【问题描述】:

我有一个带有变量 A 的 netCDF 文件,具有以下特征:

<class 'netCDF4._netCDF4.Variable'>
float64 Mlail(month, y, x)
units: -
long_name: monthly low veg lai
missing_value: 1.00000002004e+20
unlimited dimensions: 
current shape = (12, 1, 1)
filling off
Mlail = 
[[[ 2.01562]]
[[ 2.00781]]
[[ 2.10156]]
[[ 2.28906]]
[[ 2.80469]]
[[ 3.02344]]
[[ 2.91406]]
[[ 2.77344]]
[[ 2.65625]]
[[ 2.33594]]
[[ 2.14844]]
[[ 2.0625 ]]]

我希望用这样的方式替换这些值:1,2,3,4,5,6,7,8,9,10,11,12

为此,我尝试了以下命令:

dataset['Mlail'] = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]]

但它不起作用,我总是收到返回错误消息:

TypeError: 'netCDF4._netCDF4.Dataset' object does not support item assignment

有人知道怎么做吗?

这是我的代码

import netCDF4
dataset = netCDF4.Dataset('surfclim_AmpleroFluxnet.nc')
print (dataset.variables.keys())
import numpy
print ("Mlail = \n", dataset.variables['Mlail'][:])
dataset['Mlail'] = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]] 

【问题讨论】:

    标签: python netcdf4


    【解决方案1】:

    所以您的原始代码试图用值列表替换变量对象。您想要做的是替换变量上的值,您可以使用切片([:])来执行此操作,就像您在打印出值时所做的那样)。您还需要确保打开文件进行修改(使用'a' 标志)。所以你的代码会变成:

    import netCDF4
    import numpy
    
    dataset = netCDF4.Dataset('surfclim_AmpleroFluxnet.nc', 'a')
    print (dataset.variables.keys())
    print ("Mlail = \n", dataset.variables['Mlail'][:])
    var = dataset['Mlail']
    var[:] = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]]
    

    【讨论】:

      猜你喜欢
      • 2021-12-06
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      相关资源
      最近更新 更多