如何在Python中取消屏蔽netcdf

时间:2015-11-19 20:03:57

标签: python netcdf

我在Python中打开一个NetCDF文件,作为文件对象。但是,当我想检查数据并将变量放在列表中时,它会显示值已被屏蔽!我该如何解开它们?

我的代码是:

file = 'C:/Users/cru/0.5x0.5/pre/cru_ts3.23.2001.2010_.pre.dat.nc'
fileobj = netCDF4.Dataset(file)

tsvar = fileobj.variables[varname]
dec_list = []
dec_list.append(numpy.mean(tsvar[12,25,35]))
print dec_list

tsvar形状为:(120, 360, 720) #(month, lat,lon)

打印dec_list的输出为:[masked]。我看到任何月份相同的结果,纬度或经度。

2 个答案:

答案 0 :(得分:1)

了解numpy蒙面数组numpy.ma

if type(tsvar) ==  <class 'numpy.ma.core.MaskedArray'>

您可以使用numpy.ma.mean():

#instead of this
numpy.mean(tsvar[12,25,35])
# try
numpy.ma.mean(tsvar[12,25,35])

答案 1 :(得分:0)

netCDF4默认将数据加载到numpy的掩码数组中。被屏蔽的元素被认为对数据处理无效。这是一个很好的解释链接:https://currents.soest.hawaii.edu/ocn760_4/_static/masked_arrays.html

屏蔽数组可能具有不同的和,均值和方差,您可以通过以下方法检查数组中是否存在屏蔽值:

print(np.where(tsvar.mask==True))

如果要更改掩码数组中默认的加载集,可以通过以下方法关闭掩码操作:

for k in fileobj.variables:
      fileobj.variables[k].set_auto_mask(False)