python - 创建新的 netcdf 变量并使用列表中的数据填充它
问题描述
我在文件调用 fortime 中创建一个新变量,我能够创建变量并将数据附加到它这里是代码
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)
我创建了一个具有以下详细信息的变量
<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
我已经能够通过使用 cdf_fortime[:,0,0] 将掩码数组中的值添加到该变量中,现在该变量看起来像这样
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]]],
我怎样才能做到这一点
解决方案
推荐阅读
- python-3.x - Call list of functions with different values in python3
- javascript - 如何不总是从第一张照片开始?
- unit-testing - 100% 代码覆盖率;数据类模型的单元测试
- android - Android Retrofit 尝试在第一次尝试时发出不正确的请求
- ios - WKWebView is not displaying Images
- python - xpath get following siblings from current up to a certain point
- python - 如何根据变化的条件匹配 DataFrame 列上的值?
- bash - shell ,单行 if 语句,变量赋值错误
- html - 如何淡化背景滤镜模糊的边缘
- javascript - 如何将数组中的字符串转换为类?