#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]]],
как я могу этого достичь