Создайте новую переменную netcdf и заполните ее данными из списка

#python #netcdf #netcdf4

Вопрос:

Я создаю новую переменную в файле, вызывающем время, и я могу создать переменную и добавить в нее данные вот код

 cdf_fortime = cdf_file.createVariable('fortime', 'f8', ('Time', 'yt_ocean', 'xt_ocean',),zlib=True, complevel=1) cdf_fortime.setncatts({'units': 'hours', 'long_name': 'fortime', 'standard_name':'forecast_time_offset'}) cdf_fortime[:] = fcast_hrs  

размеры файла netcdf

 dimensions:  Time = 1 ;  xt_ocean = 3600 ;  yt_ocean = 1500 ;  st_ocean = 51 ;  st_edges_ocean = 52 ;  nv = 2 ;   

теперь, если fcast_hrs представляет собой одно значение 42, оно добавляется к переменной fortime.

теперь, если у меня есть файл netcdf со следующими размерами

 dimensions:  Time = UNLIMITED ; // (8 currently)  nv = 2 ;  yt_ocean = 1500 ;  xt_ocean = 3600 ;  yu_ocean = 1500 ;  xu_ocean = 3600 ;   

Теперь у меня есть fcast_hrs, который будет представлять собой список значений, подобных этому 120, 123, 126, 129, 132, 135, 138, 141. поэтому я хочу перебрать fcast_hrs и добавить каждое значение в переменную fortime

Я создал цикл for для итерации по списку fcast_hrs, а затем добавил его к значению fortime, но проблема здесь в том, что он перезаписывает предыдущие значения, так что единственное значение в переменной fortime повторяется 141 раз, а не каждое значение в списке. Я думал, что это может просто добавиться к концу, но это не так.

 cdf_fortime = cdf_file.createVariable('fortime', 'f8', ('Time', 'yt_ocean', 'xt_ocean',),zlib=True, complevel=1) cdf_fortime.setncatts({'units': 'hours', 'long_name': 'fortime', 'standard_name':'forecast_time_offset'}) for hour in fcast_hrs:  cdf_fortime[:] = fcast_hrs  

Как мне выполнить итерацию по списку fcast_hrs и добавить в него переменную fortime

поэтому, чтобы еще больше расширить вопрос, у меня есть следующий маскированный массив

 masked_array(data=[24.0, 27.0, 30.0, 33.0, 36.0, 39.0, 42.0, 45.0],  mask=[False, False, False, False, False, False, False, False],  fill_value=1e 20)  

and i have created a variable that has the following details

 <class 'netCDF4._netCDF4.Variable'> float64 fortime(Time, yt_ocean, xt_ocean)  units: hours  long_name: fortime  standard_name: forecast_time_offset unlimited dimensions: current shape = (8, 1500, 3600) filling on, default _FillValue of 9.969209968386869e 36 used  

i have been able to add the values from the masked array to this variable by using cdf_fortime[:,0,0] which now has the variable looking like this

 data=[[[24.0, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  ...,  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --]],   [[27.0, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  ...,  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --]],   [[30.0, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  ...,  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --]],   ...,   [[39.0, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  ...,  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --]],   [[42.0, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  ...,  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --]],   [[45.0, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  ...,  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --],  [--, --, --, ..., --, --, --]]],  

но я хочу заполнить все значения одним и тем же значением, чтобы это выглядело так, как в этом примере

 [[45.0, 45.0, 45.0, ..., 45.0, 45.0, 45.0],  [45.0, 45.0, 45.0, ..., 45.0, 45.0, 45.0],  ...,  [45.0, 45.0, 45.0, ..., 45.0, 45.0, 45.0]]],  

как я могу этого достичь