使用python的netCDF4读取和写入masked数据 @TOC
使用python的netCDF4读取和写入masked数据
使用python的netCDF4库读取nc数据中某个变量被masked的数据时,读取到的值默认是numpy.ma.core.MaskedConstant 数据类型。使用set_auto_mask函数可以使读取到的值变为该变量的_FillValue属性定义的值或missing_value属性定义的值。
import netCDF4 as nc
import numpy as np
dataset = nc.Dataset("D:/A.nc")
dataset.set_auto_mask(False)
将masked的数据类型读取为missing_value或_FillValue定义的值后,使用netCDF4库读取到的某个变量的数据的类型可以统一,便于将读取到的数据写入新的nc文件中。
var = dataset.variables["temp"][:]
dataset.close()
newnc = nc.Dataset("D:/B.nc", "w")
newnc.createDimension("time", 5)
newnc.createVariable("temp", np.float64, ("time"))
newnc.variables["temp"][:] = var
newnc.close()
但这样写入的数据并没有将mask的状态也写入进去,即使设置了变量的missing_value属性,也没有用。并且在读取新nc文件的原masked状态的数据时,出现“ UserWarning: WARNING: missing_value not used since it cannot be safely cast to variable data type”的提示。目前没有找到解决办法,在线等大佬指点ORZ。
在找解决办法的过程中发现的一个python的netCDF4的英文文档,比较有帮助。
netCDF4 API documentation