用于lat,long插值的NetCDF4 [[ - ]]值

时间:2016-01-23 20:05:32

标签: python numpy netcdf

我对netCDF4对象的一些请求返回:active值无效。某些位置的实际数值为[[--]]。 我怎么能抓住这个?它没有记录在http://matplotlib.org/basemap/api/basemap_api.html [[someNumerical]]文档中?

我得到它的原因是我的lat,long超出了合理插值范围,但我根本不明白如何捕获这个返回值。

以下是我的致电:

interp

嗯,解决方法当然是

value = interp(theData, longitudes, latitudes, np.asarray( [[ convertLongitude(longitude)]] ), np.asarray( [[ convertLatitude(latitude) ]] ), checkbounds=True, masked=True, order=1)

1 个答案:

答案 0 :(得分:1)

您的问题不清楚您认为问题的位置 - 通过NetCDF4提取的值或interp返回的值。

但是,在查看interp的文档时,我发现:

  

掩蔽
  如果为True,则掩盖xin和yin范围之外的点(在掩码数组中)。如果masked设置为数字,则xin和yin范围之外的点将设置为该数字。默认为False。

http://matplotlib.org/basemap/api/basemap_api.html#mpl_toolkits.basemap.interp

[--]值在masked array

的上下文中有意义

在蒙版数组中,屏蔽值(通常是无效值)显示为--

In [380]: x=np.ma.masked_greater(np.arange(4), 2)
In [381]: x
Out[381]: 
masked_array(data = [0 1 2 --],
             mask = [False False False  True],
       fill_value = 999999)

如果要使用masked=True参数,则需要读取屏蔽数组。

你可以做一些事情,比如用fillvalue替换蒙面元素

In [387]: x.filled()
Out[387]: array([     0,      1,      2, 999999])
In [388]: x.filled(-1)
Out[388]: array([ 0,  1,  2, -1])

或删除它们

In [389]: x.compressed()
Out[389]: array([0, 1, 2])

您看到[[--]]这一事实表明values可能是一个二维数组。如果是这样compressed可能没用。

但关键是values数组实际上没有--个值。这就是显示的内容,作为填充物。