我正在使用Python 2,并处理netcdf数据。
这个数组是一个名为云水混合比的变量,它是WRF气候模型的输出,有4个维度:
QC(time (25), vertical level (69), latitude (119), longitude (199))
我试图获取此数组中值的最小值。从使用NCVIEW可视化的初始分析,我发现最小值约为1x10-5,最大值为1x10-3。
我已经
了var = fh.variables['QC']
var[:].max()
var[:].min()
最大可以正常工作,但最小值给了我0.0。
然后我尝试了here的解决方案,即
var[var>0].min()
但我也得到零。然后我意识到上面的代码适用于带负片的数组,而我的没有负片。
我试图在这里和那里寻找解决方案,但发现没有什么能适合我的情况。请,如果有人能指出我正确的方向,我会非常感激。 感谢。
答案 0 :(得分:2)
var[var>0].min
是一个函数,你需要使用()
var[var>0].min()
应该效果更好
答案 1 :(得分:0)
抱歉无法发布数据,因为我没有权限共享数据。我尝试创建一个类似于数据的随机4d数组,并使用了你提供的所有解决方案,特别是@Joao Abrantes,它们似乎都运行良好。所以我想也许数据有问题。
幸运的是,数据没有任何问题。我和我的朋友讨论了这个,我们终于找到了解决方案。
解决方案是
qc[:][qc[:]>0].min()
我必须在变量之后指定[:]而不是仅仅执行
qc[qc>0].min()
还有另一种方法,即将数组指定为numpy数组,因为qc = fh.variables['QC']
返回netCDF4.Variable。通过添加第二行qc2 = qc[:]
,它已成为numpy.ndarray。
qc = fh.variables['QC']
qc2 = qc[:] # create numpy array
qc2[qc2>0].min()
对不起我昨天发布时问题不明确。因为我今天才知道这件事。