Numpy 如何创建一个xarray.Dataset,在输出netCDF文件中放入正确的填充值?

Numpy 如何创建一个xarray.Dataset,在输出netCDF文件中放入正确的填充值?,numpy,python-3.7,python-xarray,netcdf4,Numpy,Python 3.7,Python Xarray,Netcdf4,我想用一个名为data的变量创建一个netcdf文件,该变量有一个被屏蔽的值 尝试1:更正xarray.Dataset,错误的netcdf文件 我尝试从numpy掩码数组创建xarray.Dataset [1]中的:将numpy作为np导入;导入numpy.ma作为ma;将xarray作为xr导入; 在[2]中:data=ma.array([-9999.0],mask=[True],fill_value=-9999.0) 在[3]中:dataset=xr.dataset({'data':xr.D

我想用一个名为
data
的变量创建一个netcdf文件,该变量有一个被屏蔽的值

尝试1:更正
xarray.Dataset
,错误的netcdf文件

我尝试从numpy掩码数组创建
xarray.Dataset

[1]中的
:将numpy作为np导入;导入numpy.ma作为ma;将xarray作为xr导入;
在[2]中:data=ma.array([-9999.0],mask=[True],fill_value=-9999.0)
在[3]中:dataset=xr.dataset({'data':xr.DataArray(data,attrs={''u FillValue':-9999.0})
在[4]中:dataset.to_netcdf('data.nc',format='NETCDF4_CLASSIC')
当我将“data”变量作为屏蔽数组返回时,我得到了一个具有时髦填充值的东西,但屏蔽数组至少看起来不错:

[7]中的
:数据集['data'].到屏蔽数组()
出[7]:
屏蔽_数组(数据=[--],
掩码=[True],
填充值=1e+20,
dtype=64)
但是当我转储netcdf文件时,数据值是
NaN
,而不是我的填充值
-9999。

$ ncdump data.nc
netcdf data {
dimensions:
        dim_0 = 1 ;
variables:
        double data(dim_0) ;
                data :_FillValue = -9999. ;
data:

 data = NaN ;
}

尝试2:错误的
xarray.Dataset
,更正netcdf文件

我尝试使用带有填充值的裸python列表创建数据集:

[20]中的
dataset=xr.dataset({'data':xr.DataArray([-9999.0],attrs={'u FillValue':-9999.0})
在[21]中:dataset.to_netcdf('data.nc',format='NETCDF4')
这将创建正确的netcdf文件:

$ ncdump data.nc
netcdf data {
dimensions:
        dim_0 = 1 ;
variables:
        double data(dim_0) ;
                data :_FillValue = -9999. ;
data:

 data = _ ;
}
但是当我试图获取数据时,数据集本身不能正常工作。遮罩数组将填充值显示为数据,而不是遮罩它:

In [22]: dataset['data'].to_masked_array()                                                                                                                                                               
Out[22]: 
masked_array(data=[-9999.0],
             mask=[False],
       fill_value=1e+20)