【问题标题】:Invalid value (printed as '--') in a numpy array from a netCDF file来自 netCDF 文件的 numpy 数组中的无效值(打印为“--”)
【发布时间】:2015-07-23 10:59:22
【问题描述】:

我通过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

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

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

【问题讨论】:

    标签: python arrays python-2.7 numpy netcdf


    【解决方案1】:

    这里有一个masked array,其中-- 代表被屏蔽的元素。

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

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

    【讨论】:

    • 谢谢@rth,当然这确实是一个掩码数组(我对netCDF的出处感到困惑)。谢谢 - 尽管我像你一样从 1.9.1 更新到 1.9.2,但我仍然收到 numpy.mean 的错误,其中元组作为轴参数。还在调查这个...... ???
    • 对于numpy.mean 的麻烦,我提出了一个新问题,因为它对我来说仍然很神秘:stackoverflow.com/questions/30209624/…
    • @ztl 不,抱歉,我在运行测试时可能出错了,在屏蔽数组中使用元组作为轴时,我也确实遇到了异常。
    猜你喜欢
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 2018-09-06
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 2011-09-30
    相关资源
    最近更新 更多