替换 netcdf 变量并重写为新的 netcdf 文件

replacing a netcdf variable and rewrite to a new netcdf file

谁能帮我解决以下问题。 我有一个包含以下维度和变量的 netcdf 文件: 尺寸(大小):y(100),n2(2),x(100), 变量(维度):int64 valid_time(), int64 start_time(), float64 y(y), float64 y_bounds(y,n2), float64 x(x), float64 x_bounds(x,n2), int16 降水量(y,x), int8 proj()

netcdf 包含一个用于沉淀的二维数组 (100,100)。现在我有一个新的相同大小的二维数组 (100,100),但具有不同的值。我想知道如何用新的替换 netcdf 中的数组并将其重写为新的 netcdf。我尝试了以下代码,但它无法替换数组(它可以将 file.nc 重写并重命名为 newfile.nc 而无需替换数组)

import xarray as xr
ds=xr.open_dataset('file.nc')
precip=ds.variables['precipitation']
precip=np.array(precip)
precip=new_array
ds.to_netcdf('newfile.nc')

首先提供你的 new_array 作为 2D numpy 数组,你可以这样做:

import numpy as np
new_array = np.array(new_array)

那你可以试试:

import xarray as xr
ds=xr.open_dataset('file.nc')
ds.variables['precipitation'].values = new_array
ds.to_netcdf('newfile.nc)

import xarray as xr
ds=xr.open_dataset('file.nc')
ds['precipitation'].values = new_array
ds.to_netcdf('newfile.nc)

但请注意 x 和 y 维度以及您的 new_array 映射到网格中心的方式应与您的 precipitation.

一致