来自 netCDF 文件的 numpy 数组中的无效值(打印为“--”)

Invalid value (printed as '--') in a numpy array from a netCDF file

我通过 netCDF4 将 netCDF 文件读入 python。 我得到打印为 -- 的包含无效值的数组,例如:

[[[-- -- -- ..., 0.0 0.0 0.0]
  [-- -- -- ..., 0.0 0.0 0.0]
  [-- -- -- ..., 0.0 0.0 0.0]]

 [[-- -- -- ..., 0.0 0.0 0.0]
  [-- -- -- ..., 0.0 0.0 0.0]
  [-- -- -- ..., 0.0 0.0 0.0]]]

这些值从何而来,我如何识别(和替换)它们? numpy.isnan 之类的东西也会 return 我 -- 结果。我可以稍后将这些数组与 -- 一起使用而不会崩溃(例如,我可以绘制它们),但它们似乎对某些操作有问题。

例如,我曾经做过类似

的事情
numpy.mean(myarray, axis=(1,2)) # the tuple for `axis` is not very regular

myarray 之前源自我的 netCDF 文件没有任何问题,但我得到 TypeError: tuple indices must be integers, not tuple 并且这些奇怪的 -- 填充数组崩溃...

我正在使用 python 2.7.9(如果与打印到屏幕格式相关,PyCharm 用于代码编辑)。

这里是 masked array,其中 -- 代表屏蔽元素。

只需使用myarray.datamyarray.mask分别获取数据和无效元素。

最有可能的是,一个屏蔽的 numpy 数组被故意保存在该 netcdf4 文件中,可能是出于某种原因。所以我会简单地继续使用这个掩码数组。正如您所注意到的,大多数 Numpy/Scipy/Matplotlib 函数(例如 numpy.mean)都有处理它们的特定逻辑。