繁体   English   中英

如何将数组保存为 NetCDF 文件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM