Netcdf4: сохранить изменения при редактировании - PullRequest
0 голосов
/ 13 мая 2019

У меня проблема с файлом netcdf, включая данные о среднем давлении на уровне моря.Мне нужно провести EOF-анализ этих данных, поэтому мне нужно взвесить данные с квадратным корнем косинуса широты.Я открываю набор данных, извлекаю переменные и умножаю их на вес.

Я проверил расчет, печатая значения MSLP для фиксированных временных рядов и долготы до и после взвешивания.Второй отпечаток правильный и именно то, что я хочу, но данные, похоже, не сохраняются.Фактически, когда (после закрытия набора данных) я снова открыл его и перепечатал данные, они являются исходными и не изменились.

Python:

dset = Dataset(newpath,'r+')
lat=dset.variables['lat'][:]
msl=dset.variables['msl'][:]

j=0 #lat counter
print(msl[0,:,0])   #first print check (fixed times series and longitude)
while j<160:
    msl[:,j,:]=msl[:,j,:]*math.sqrt(math.fabs(math.cos(lat[j]*0.015708))
   j=j+1
print(msl[0,:,0])   #second print check (correct weight in output)
dset.close()

print ('____________________________________________________')

dset = Dataset(newpath)
lat=dset.variables['lat'][:]
msl=dset.variables['msl'][:]
print(msl[0,:,0])    #third print check (original data)
dset.close()

Вывод:

[101021.06 100858.19 100738.31 100654.19 100615.19 100593.69 100562.56
100511.81 100424.94 100336.31 100258.81 100210.44 100158.69 100104.44
100056.94 100008.06  99980.31  99977.81  99994.44 100021.31 100072.69
100129.69 100195.56 100277.31 100384.06 100517.81 100673.69 100818.69
100937.81 101032.44 101123.56 101225.31 101333.56 101422.81 101508.94
101596.69 101717.69 101827.06 101929.19 102002.31 102085.81 102153.69
102106.94 101980.81 101912.19 101924.94 101964.31 102036.94 102144.56
102230.81 102190.31 102142.06 102129.06 102114.19 102074.81 102042.19
102006.56 101979.81 101939.44 101901.81 101856.69 101799.69 101737.31
101677.81 101612.69 101551.06 101489.06 101424.19 101343.06 101250.44
101160.81 101095.19 101048.06 101033.31 101053.56 101084.81 101087.44
101099.44 101110.44 101126.56 101138.06 101147.31 101155.94 101171.19
101184.44 101209.94 101230.31 101256.69 101282.19 101309.06 101336.06
101372.81 101408.69 101452.81 101490.69 101540.81 101587.69 101642.81
101695.19 101751.56 101803.31 101860.44 101909.06 101956.31 101996.06
102028.94 102050.44 102060.56 102055.81 102040.56 102016.69 101979.31
101924.06 101845.06 101743.94 101633.31 101505.81 101370.44 101216.69
101061.56 100902.94 100739.06 100571.44 100416.94 100282.56 100150.94
100012.94  99876.06  99737.19  99624.56  99533.69  99483.81  99457.81
 99473.81  99510.69  99571.06  99627.94  99690.19  99731.69  99777.81
 99788.44  99837.69  99868.44  99936.81  99964.44 100129.44 100214.56
100257.94 100333.81 100380.06 100444.94 100485.81 100578.06 100684.31
100783.81 100866.69 100939.44 100999.81 101061.06 101111.31]
   [ 41619.645  43605.746  45517.273  47355.477  49134.914  50851.395
 52497.957  54074.137  55574.52   57021.02   58424.58   59799.477
 61129.76   62418.176  63672.594  64889.86   66086.44   67267.34
 68430.6    69571.84   70702.53   71810.86   72900.21   73976.79
 75048.58   76118.43   77183.93   78220.58   79216.72   80173.18
 81106.555  82028.58   82936.46   83809.59   84661.07   85495.07
 86338.734  87154.586  87946.35   88695.16   89435.1    90143.61
 90732.586  91231.664  91762.88   92349.1    92941.94   93548.02
 94169.59   94755.02   95205.89   95631.93   96073.62   96496.445
 96879.016  97250.93   97603.02   97946.78   98260.68   98560.51
 98836.43   99084.21   99310.16   99522.38   99712.65   99889.96
100050.59  100192.15  100301.43  100383.13  100451.66  100527.97
100606.76  100701.945 100816.305 100925.96  100991.34  101050.41
101092.79  101124.6   101136.1   101129.66  101106.88  101075.016
101025.43  100972.31  100898.305 100814.47  100713.92  100598.87
100468.02  100330.875 100176.836 100014.86   99830.57   99642.12
 99434.164  99217.91   98982.5    98734.42   98465.234  98184.53
 97878.83   97554.945  97206.97   96835.48   96436.2    96009.18
 95551.17   95066.375  94556.56   94017.25   93444.54   92833.24
 92185.11   91511.78   90806.73   90078.13   89316.77   88537.77
 87739.2    86919.49   86079.88   85234.65   84389.22   83528.47
 82644.56   81743.57   80822.664  79904.28   78983.86   78075.61
 77164.734  76264.016  75355.77   74440.77   73497.734  72532.51
 71525.42   70494.195  69409.86   68323.33   67193.75   66057.68
 64861.55   63718.73   62486.844  61190.336  59873.098  58495.234
 57082.75   55608.207  54109.78   52561.516  50947.504  49257.734
 47489.68   45635.43   43693.46   41656.83 ]
____________________________________________________

[101021.06 100858.19 100738.31 100654.19 100615.19 100593.69 100562.56
100511.81 100424.94 100336.31 100258.81 100210.44 100158.69 100104.44
100056.94 100008.06  99980.31  99977.81  99994.44 100021.31 100072.69
100129.69 100195.56 100277.31 100384.06 100517.81 100673.69 100818.69
100937.81 101032.44 101123.56 101225.31 101333.56 101422.81 101508.94
101596.69 101717.69 101827.06 101929.19 102002.31 102085.81 102153.69
102106.94 101980.81 101912.19 101924.94 101964.31 102036.94 102144.56
102230.81 102190.31 102142.06 102129.06 102114.19 102074.81 102042.19
102006.56 101979.81 101939.44 101901.81 101856.69 101799.69 101737.31
101677.81 101612.69 101551.06 101489.06 101424.19 101343.06 101250.44
101160.81 101095.19 101048.06 101033.31 101053.56 101084.81 101087.44
101099.44 101110.44 101126.56 101138.06 101147.31 101155.94 101171.19
101184.44 101209.94 101230.31 101256.69 101282.19 101309.06 101336.06
101372.81 101408.69 101452.81 101490.69 101540.81 101587.69 101642.81
101695.19 101751.56 101803.31 101860.44 101909.06 101956.31 101996.06
102028.94 102050.44 102060.56 102055.81 102040.56 102016.69 101979.31
101924.06 101845.06 101743.94 101633.31 101505.81 101370.44 101216.69
101061.56 100902.94 100739.06 100571.44 100416.94 100282.56 100150.94
100012.94  99876.06  99737.19  99624.56  99533.69  99483.81  99457.81
 99473.81  99510.69  99571.06  99627.94  99690.19  99731.69  99777.81
 99788.44  99837.69  99868.44  99936.81  99964.44 100129.44 100214.56
100257.94 100333.81 100380.06 100444.94 100485.81 100578.06 100684.31
100783.81 100866.69 100939.44 100999.81 101061.06 101111.31]

1 Ответ

1 голос
/ 15 мая 2019

В этот момент в начале вашего скрипта:

msl=dset.variables['msl'][:]

msl - это просто массив Numpy, который больше не связан с вашим файлом NetCDF, поэтому вам нужно записать массив обратно в файл NetCDF:

dset.variables['msl'][:] = msl

перед первым закрытием файла NetCDF.

...