Python 为什么我创建的NETcdf数据被屏蔽了?

Python 为什么我创建的NETcdf数据被屏蔽了?,python,netcdf,netcdf4,Python,Netcdf,Netcdf4,我用一些数据创建了一个netcdf文件,当我在另一个脚本中导入数据时,它被屏蔽了: >>> type(Data[:]) <class 'numpy.ma.core.MaskedArray'> 其中Tgrid_ave是一个numpy数组 然后,我以这种方式在另一个脚本中导入数据: dataset = Dataset('gridded_data/DataAveraged.nc', 'r') LatRange = dataset.var

我用一些数据创建了一个netcdf文件,当我在另一个脚本中导入数据时,它被屏蔽了:

    >>> type(Data[:])
    <class 'numpy.ma.core.MaskedArray'>
其中Tgrid_ave是一个numpy数组

然后,我以这种方式在另一个脚本中导入数据:

    dataset = Dataset('gridded_data/DataAveraged.nc', 'r')

    LatRange = dataset.variables['lat'][:]
    LonRange = dataset.variables['lon'][:-1]

    Tgrid_ave = dataset.variables['tempAve']
我的Lat和Lon数据没有被屏蔽,但是我的Tgrid_ave数据被屏蔽了


我怎样才能避免这种情况

用于返回屏蔽数组或常规Numpy数组的netCDF4库,具体取决于从数组(或数组切片)请求的数据是否包含填充值。这是一种不幸的行为,但它似乎是固定的。所以我认为,从1.4版开始,如果定义了填充值,默认行为总是返回一个屏蔽数组(我还没有测试它)


无论如何,您可以通过将设置为
False

来确保始终获得常规的numpy数组。您可以通过
np.array(您的\u masked\u数组)
将掩码的
numpy
数组转换为普通数组。您将获得掩码数组,因为
Tgrid\u ave
可能是掩码数组。我猜当您为输出netcdf文件定义fill值-9999时,
netCDF4
将自动将输出/输入转换为掩码数组。所以,当您丢失数据时,它就会充满值-9999。在任何情况下,只需将输入转换为普通数组,并用缺少的值替换填充值:
datain=np.array(dataset.variables['tempAve'][:]);datain[datain==-9999]=np.nan
    dataset = Dataset('gridded_data/DataAveraged.nc', 'r')

    LatRange = dataset.variables['lat'][:]
    LonRange = dataset.variables['lon'][:-1]

    Tgrid_ave = dataset.variables['tempAve']