Python 具有填充值/缺少值的NetCDF变量

Python 具有填充值/缺少值的NetCDF变量,python,netcdf,Python,Netcdf,我在NetCDF文件中有一个变量,如果该变量为null,则该变量具有默认值。当变量缺少值时,如何删除该值或将其更改为0?听起来问题在于,当变量填充到NetCDF文件中时,它被设置为为为缺少的值插入一些默认值。现在,我假设您需要在写入文件并处理数据之后删除这些默认值 因此(取决于您访问变量的方式),我将从NetCDF文件中提取变量,并将其分配给python变量。这是我想到的第一个方法 使用for循环单步执行并将该默认值替换为0 variable=NetCDF_variable #Assume d

我在NetCDF文件中有一个变量,如果该变量为null,则该变量具有默认值。当变量缺少值时,如何删除该值或将其更改为0?

听起来问题在于,当变量填充到NetCDF文件中时,它被设置为为为缺少的值插入一些默认值。现在,我假设您需要在写入文件并处理数据之后删除这些默认值

因此(取决于您访问变量的方式),我将从NetCDF文件中提取变量,并将其分配给python变量。这是我想到的第一个方法

使用for循环单步执行并将该默认值替换为0

variable=NetCDF_variable  #Assume default value is 1e10
cleaned_list=[]
for i in variable:
    if i == 1e10:
        cleaned_list.append(0)  #0 or whatever you want to fill here
    else: 
        cleaned_list.append(i)
如果默认值是一个float,那么您可能需要检查上述代码是否工作正常。您可能还对数据感兴趣,以防您所做的任何计算都会因插入0而中断

编辑:用户N1B4提供了一种更干净、更高效的方法来完成与上面完全相同的事情

variable[variable == 1e10] = 0

由于netCDF变量被强制转换为numpy数组,
variable[variable==1e10]=0
实现了与上述相同的功能,并且可以处理多维数组。我知道有一种更快的方法,我仍在像这样学习速记。谢谢你的建议,我会把它添加到答案中