我通过 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
在源 self 的 netCDF 文件的 myarray
上,之前没有任何问题,但我收到 TypeError: tuple Index must be integers, not tuple
以及这些奇怪的 崩溃>--
-填充数组...
我正在使用 python 2.7.9
(如果与打印到屏幕格式相关,则使用 PyCharm
进行代码编辑)。
最佳答案
你这里有一个 masked array ,其中 --
表示屏蔽元素。
只需使用myarray.data
和myarray.mask
分别获取数据和无效元素。
很可能,一个屏蔽的 numpy 数组被故意保存在该 netcdf4 文件中,可能是有原因的。所以我会继续使用这个屏蔽数组。正如您所注意到的,大多数 Numpy/Scipy/Matplotlib 函数(例如 numpy.mean
)都有特定的处理逻辑。
关于python - netCDF 文件中的 numpy 数组中的值无效(打印为 '--' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30193089/