Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从netCDF文件读取数据时,丢失了\u值属性?_Python_Missing Data_Netcdf_Python Xarray - Fatal编程技术网

Python 从netCDF文件读取数据时,丢失了\u值属性?

Python 从netCDF文件读取数据时,丢失了\u值属性?,python,missing-data,netcdf,python-xarray,Python,Missing Data,Netcdf,Python Xarray,我正在从NCEP/NCAR再分析1的netCDF文件中读取风分量(u和v)数据,以进行一些计算。我正在使用xarray读取文件 在其中一个计算中,我想屏蔽掉低于某个阈值的所有数据,使它们等于缺少的_值属性。我不想用楠的 但是,使用xarray读取数据时,netCDF文件中变量中缺少的_值属性不会复制到包含数据的xarray.DataArray 我找不到从netCDF文件变量复制此属性的方法,使用xarray 下面是我尝试做的一个例子: import xarray as xr import num

我正在从NCEP/NCAR再分析1的netCDF文件中读取风分量(u和v)数据,以进行一些计算。我正在使用xarray读取文件

在其中一个计算中,我想屏蔽掉低于某个阈值的所有数据,使它们等于缺少的_值属性。我不想用楠的

但是,使用xarray读取数据时,netCDF文件中变量中缺少的_值属性不会复制到包含数据的xarray.DataArray

我找不到从netCDF文件变量复制此属性的方法,使用xarray

下面是我尝试做的一个例子:

import xarray as xr
import numpy as np

DS1 = xr.open_dataset( "u_250_850_2009012600-2900.nc" )
DS2 = xr.open_dataset( "v_250_850_2009012600-2900.nc" )

u850 = DS1.uwnd.sel( time='2009-01-28 00:00', level=850, lat=slice(10,-60), lon=slice(260,340) )
v850 = DS2.vwnd.sel( time='2009-01-28 00:00', level=850, lat=slice(10,-60), lon=slice(260,340) )

vvel850 = np.sqrt( u850*u850 + v850*v850 )

jet850 = vvel850.where( vvel850 >= 12 )
#jet850 = vvel850.where( vvel850 >= 12, vvel850, vvel850.missing_value )
最后一行注释是我想做的:使用缺失的_值属性填充vvel850<12的地方。最后一行未注释的内容给了我NaN的,我试图避免的

从netCDF读取数据时,这是xarray的默认行为吗?无论是否,如何从文件变量中获取此属性

另外一个信息:我正在使用PyNGL()绘制等高线图,但它不适用于NaN

谢谢

Mateus

编码
字典中保留“缺少值”属性。其他属性如“单位”或“标准名称”保存在
attrs
字典中。例如:

v850.encoding['missing_value']
您可能还对其他一些有助于您的用例的xarray功能感兴趣:

  • xr.open\u数据集
    有一个
    mask\u和\u scale
    关键字参数。这将关闭将缺失/填充值转换为NaN的功能
  • DataArray.to_masked_array
    DataArray
    (填充NaN)转换为
    numpy.MaskedArray
    ,用于Matplotlib或PyNGL等绘图程序

  • 谢谢@jhamman,我使用了第二个建议,效果非常好。