Python netcdf - 将指定值转换为 NaN
Python netcdf - convert specified values to NaN
我正在绘制来自卫星和天气模型的风数据的 pcolourmesh。这些值都存储在 netcdf 文件中。下面我尝试用 NaN 替换等于 70 或 0 的值,这不会给出错误但它也不会创建 NaN,nozeros
与原始数据集的大小相同。我查看了数据,它确实有值 ==70 和 0。
import netCDF4 as nc
import numpy as np
import matplotlib.pyplot as plt
import csv as cs
import pandas as pd
ncfile = nc.Dataset('C:\Users\mmso2\Google Drive\ENVI_I-PAC_2007_10_21_21_22_47.nc')
SARwind = ncfile.variables['sar_wind']
ModelWind = ncfile.variables['model_speed']
LON = ncfile.variables['longitude']
LAT = ncfile.variables['latitude']
LandMask = ncfile.variables['mask']
#clean the data of values = 70
SARwind_nan = SARwind
for i in SARwind_nan:
if i.any() == 70:
i = np.nan
elif i.any()==0:
i = np.nan
nozeros=np.count_nonzero(~np.isnan(SARwind_nan))
另外,我想将 LandMask >=0 的区域转换为 NaN,请问有更好的方法吗?
谢谢
除了缩进语法错误外,您的代码中还有几个问题。
下面的代码将不执行任何操作。什么是 i
?结果没有保存。
for i in SARwind_nan:
if i.any() == 70:
i = np.nan
...
这里有一个示例,它应该可以满足您的要求。
SARwind = np.array([
[1,2,0,-4,-5],
[6,0,70,-9,-15],
[10,11,-12,70,-14],
[0,17,70,-19,-20],
], dtype=np.float32)
SARwind_nan = SARwind.copy()
SARwind_nan[SARwind_nan == 0.0] = np.nan
SARwind_nan[SARwind_nan == 70.0] = np.nan
print SARwind_nan
nozeros=np.count_nonzero(~np.isnan(SARwind_nan))
print nozeros
我正在绘制来自卫星和天气模型的风数据的 pcolourmesh。这些值都存储在 netcdf 文件中。下面我尝试用 NaN 替换等于 70 或 0 的值,这不会给出错误但它也不会创建 NaN,nozeros
与原始数据集的大小相同。我查看了数据,它确实有值 ==70 和 0。
import netCDF4 as nc
import numpy as np
import matplotlib.pyplot as plt
import csv as cs
import pandas as pd
ncfile = nc.Dataset('C:\Users\mmso2\Google Drive\ENVI_I-PAC_2007_10_21_21_22_47.nc')
SARwind = ncfile.variables['sar_wind']
ModelWind = ncfile.variables['model_speed']
LON = ncfile.variables['longitude']
LAT = ncfile.variables['latitude']
LandMask = ncfile.variables['mask']
#clean the data of values = 70
SARwind_nan = SARwind
for i in SARwind_nan:
if i.any() == 70:
i = np.nan
elif i.any()==0:
i = np.nan
nozeros=np.count_nonzero(~np.isnan(SARwind_nan))
另外,我想将 LandMask >=0 的区域转换为 NaN,请问有更好的方法吗?
谢谢
除了缩进语法错误外,您的代码中还有几个问题。
下面的代码将不执行任何操作。什么是 i
?结果没有保存。
for i in SARwind_nan:
if i.any() == 70:
i = np.nan
...
这里有一个示例,它应该可以满足您的要求。
SARwind = np.array([
[1,2,0,-4,-5],
[6,0,70,-9,-15],
[10,11,-12,70,-14],
[0,17,70,-19,-20],
], dtype=np.float32)
SARwind_nan = SARwind.copy()
SARwind_nan[SARwind_nan == 0.0] = np.nan
SARwind_nan[SARwind_nan == 70.0] = np.nan
print SARwind_nan
nozeros=np.count_nonzero(~np.isnan(SARwind_nan))
print nozeros