【问题标题】:Why is the NETcdf data I created masked?为什么我创建的 NETcdf 数据被屏蔽了?
【发布时间】:2018-10-10 13:48:17
【问题描述】:

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

    >>> type(Data[:])
    <class 'numpy.ma.core.MaskedArray'>

这是我创建数据的方式:

    # Put in a grid
    print 'Putting the data in a grid...'
    LatRange = range( int(min(Lat)), int(max(Lat)), 1 )
    LonRange = np.arange( int(min(Lon)), int(max(Lon)), 1 )
    dRange = range(0,200,10) + range(200,4000,100)
    dateRange = np.arange( float(min(Dates).year)+min(Dates).month/12., float(max(Dates).year)+max(Dates).month/12., 1./12. )

    dataset = Dataset('gridded_data/DataAveraged.nc','w', format='NETCDF4_CLASSIC')
    zD = dataset.createDimension('zD',len(dRange))
    latD = dataset.createDimension('latD',len(LatRange))
    lonD = dataset.createDimension('lonD',len(LonRange))
    timeD = dataset.createDimension('timeD',len(dateRange))

    tempAve = dataset.createVariable('tempAve', np.float32, ('zD','latD','lonD','timeD'), fill_value=-9999)
    tempAve.units = 'psu'
    tempAve[:] = Tgrid_ave

其中 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 数据被屏蔽了。

我怎样才能避免这种情况!?

【问题讨论】:

  • 您可以通过np.array(your_masked_array)将屏蔽的NumPy数组转换为普通数组。您会得到掩码数组,因为 Tgrid_ave 可能是掩码数组。我猜当您为输出 netcdf 文件定义填充值 -9999 时,netCDF4 会自动将输出/输入转换为掩码数组。因此,无论您在哪里丢失数据,它都会被值 -9999 填充。在任何情况下,只需将您的输入转换为普通数组,并用缺失值替换填充值:datain=np.array(dataset.variables['tempAve'][:]);datain[datain==-9999]=np.nan

标签: python netcdf netcdf4


【解决方案1】:

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

无论如何,您可以通过将set_auto_mask 设置为False 来确保始终获得常规的numpy 数组。

【讨论】:

    猜你喜欢
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    相关资源
    最近更新 更多