如何找到除零之外的netCDF数组的最小值

时间:2015-05-20 13:15:48

标签: python arrays numpy minimum netcdf

我正在使用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()

但我也得到零。然后我意识到上面的代码适用于带负片的数组,而我的没有负片。

我试图在这里和那里寻找解决方案,但发现没有什么能适合我的情况。请,如果有人能指出我正确的方向,我会非常感激。 感谢。

2 个答案:

答案 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()

对不起我昨天发布时问题不明确。因为我今天才知道这件事。