[英]How I can save an array as NetCDF file?
另一位用户帮助我构建了以下完美运行的代码。 使用此代码,我有一个数组,其中包含每个网格和年份的初始数据的 sum_values(有条件地)。 我想将“summed_values_per_year”数组保存为 NetCDF 文件。 我尝试了多种方法来做到这一点,但是,我是 Python 新手,但我没有成功。
如果您有任何想法,请分享,并让我知道我还需要提供什么,例如对象的属性。 非常感谢您提前。
file = netCDF4.Dataset ('/mnt/data/rcp45/tas/merged_rcp45/summed_values_per_year')
lat = file.variables['lat'][:]
lon = file.variables['lon'][:]
data = file.variables['tas'][:]
summed_values = np.zeros((14,16))
for grid_index, grid in enumerate(data):
for lon_index, lon_column in enumerate(grid):
for lat_index, value in enumerate(lon_column):
if 0 < value and value < 25:
summed_values[lon_index][lat_index] += value
n_years = data.shape[0] // 365
summed_values_per_year = np.zeros((n_years + 1, 14, 16))
for grid_index, grid in enumerate(data):
for lon_index, lon_column in enumerate(grid):
for lat_index, value in enumerate(lon_column):
if 0 < value and value < 25:
year = grid_index // 365
**summed_values_per_year** [year][lon_index][lat_index] += value
我会看看xarray 。 具体来说,请参阅有关创建数据集的文档,然后参阅有关 读取和写入文件的文档。
您可以直接从summed_values_per_year(year, lon, lat)
创建一个 xarray 数据集,如下所示:
ds = xr.Dataset({
'summed_values_per_year': xr.DataArray(
summed_values_per_year,
dims=['year', 'lon', 'lat'],
coords=[range(nyears), lon, lat], # using the variables you defined
),
})
ds.to_netcdf("some/output/filepath.nc")
也就是说,看起来您正在做的是首先屏蔽数据以仅包含 0 到 25 之间的值,然后按年份分组并求和。 这可以在 xarray 中非常容易地完成:
ds = xr.open_dataset(
'/mnt/data/rcp45/tas/merged_rcp45/summed_values_per_year'
)
summed_values_per_year = (
ds.where((ds.tas > 0) & (ds.tas < 25))
.groupby('time.year')
.sum(dim='time')
)
summed_values_per_year.to_netcdf("some/output/filepath.nc")
有关更多信息,请参阅有关 计算的 xarray 文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.