Я могу предложить псевдорешение (вам, возможно, придется изменить это в соответствии с вашими потребностями) в 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()