替换 netCDF 文件中的变量

Replacing a variable inside a netCDF file

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

<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]]

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

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]] 

所以您的原始代码试图用值列表替换变量对象。你想要做的是替换变量上的值,你可以用一个切片([:])来做,就像你打印出这些值时所做的那样)。您还需要确保打开文件进行修改(使用 '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]]