我通过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
等内容也会返回--
作为结果。我可以在--
之后使用这些数组而不会崩溃(例如我可以绘制它们),但它们似乎对某些操作有问题。
例如,我曾经做过像
这样的事情numpy.mean(myarray, axis=(1,2)) # the tuple for `axis` is not very regular
来自我的netCDF文件的myarray
上的没有任何问题,但是我得到TypeError: tuple indices must be integers, not tuple
并且这些奇怪的--
填充数组崩溃...
我正在使用python 2.7.9
(如果与打印到屏幕格式相关,则PyCharm
用于代码编辑)。
答案 0 :(得分:3)
这里有masked array,其中--
代表蒙面元素。
只需使用myarray.data
和myarray.mask
分别获取数据和无效元素。
最有可能的是,一个蒙面的numpy数组被故意保存在netcdf4文件中,可能是有原因的。所以我只是继续使用这个蒙面数组。正如您所注意到的,大多数Numpy / Scipy / Matplotlib函数(例如numpy.mean
)都有一个特定的逻辑来处理它们。