我可以在 Python 中提出伪解决方案(您可能需要对其进行修改以满足您的需要),并使用 netCDF4 模块和 NumPy 以防万一。
from netCDF4 import Dataset
import numpy as np
现在,我将以写入模式打开 netCDF 文件:
ncin = Dataset(your_file_in, 'a');
然后我会读取数据:
datain = ncin.variables['lithk'][:];ntime=np.size(datain);
现在我们可以计算第一个和最后一个时间步之间的变化:
valout = datain[0] - datain[-1]
您想将新值写入文件:
ncin.variables['lithk'][ntime+1:ntime+1] = valout;
ncin.close()
请注意,因为我没有您的数据,而且我没有测试就写了答案,您可能还必须修改时间变量,并且为了沿时间维度更改数据的数量,它必须是“无限的” '。否则,您只需编写一个新的 netCDF 文件,将时间维度值更改为 22。
我可以提出一些像这样的最终示例,我首先在 netCDF 中创建随机数据集并按照您的意愿进行调整:
import numpy as np
from netCDF4 import Dataset,num2date,date2num
# -----------------------------
ndata=21;
dataout=np.random.random((ndata,));
unout='seconds since 2018-01-01 00:00:00'
# ---------------------
# make data:
ncout=Dataset('test.nc','w','NETCDF3_CLASSIC');
ncout.createDimension('time',None);
ncout.createVariable('time','float64',('time'));ncout.variables['time'].setncattr('units',unout);ncout.variables['time'][:]=np.linspace(0,3600*ndata,ndata);
ncout.createVariable('lithk','float32',('time'));ncout.variables['lithk'][:]=dataout;
ncout.close()
# ----------------------
# modify last value:
ncin = Dataset('test.nc', 'a');
datain = ncin.variables['lithk'][:];ntime=np.size(datain);
valout = datain[0] - datain[-1]
ncin.variables['lithk'][ntime:ntime+1] = valout;
ncin.close()