[英]replace Nans with -9999 in existing netcdf file with Python
我有一个netcdf文件,其中一个变量有nan。 我想读取文件,然后用-9999替换nans。 然后保存新的netcdf文件的更改。 到目前为止我有这个:
import netCDF4 as nc
from netCDF4 import Dataset
import numpy as np
f = Dataset('anen_12km_1yr_san_angelo_00Z_100m_38_small_2014.nc','r+')
f.variables['wspd_wrf_m'][:][f.variables['wspd_wrf_m'][:] == np.nan] = -9999.
f.close()
当我重新打开这个文件并打印出这个变量的np.max或np.min时,我仍然得到nan而不是-9999。 如何替换此netcdf文件中的nans并使用替换的nans的更改重写新的netcdf文件,我需要做什么?
你不能使用== np.nan
比较。 考虑这个例子:
arr = np.random.random(3)
arr[1] = np.nan
print(arr)
print(arr == np.nan)
这给出了:
数组([0.88978822,nan,0.71066851])
[假错假]
检查NaN的正确方法是使用np.isnan
:
print(np.isnan(arr))
哪个回报:
[假真假]
您可以使用它来替换NaN,类似于您现在正在执行的操作:
arr[np.isnan(arr)] = -9999
作为在python中执行此操作的替代方法,您还可以使用CDO从命令行在一行中执行此操作:
cdo setmissval,-9999 in.nc out.nc
这会将所有缺失值更改为-9999,并在文件out.nc中将_FillValue元数据设置为-9999
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.