我对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)
答案 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
数组实际上没有--
个值。这就是显示的内容,作为填充物。