【问题标题】:Average different layers in a Array without considering NaN value在不考虑 NaN 值的情况下平均数组中的不同层
【发布时间】:2020-12-01 03:40:33
【问题描述】:

我在三层中屏蔽了数组数据(从NetCDF 文件访问),如下所示。我想在平均时意思这三层而不考虑NaN值(Here -1)单元格。任何建议都会有所帮助。

masked_array(

      data=[[ 270,  554, -1],
            [ 270,  -1, 2068],
            [ -1,  554, 2068],
        ...,
        [ -1, -1, 1349],
        [ 704, 1019, -1],
        [ 704, 1019, 1349]],
  mask=False,
  fill_value=999999,
  dtype=int16)

输出应该是这样的:

  data=[[412],
        [1169],
        [1311],
        ...,
        [1349],
        [861.5],
        [1536]]

【问题讨论】:

  • 提供最小可重现示例
  • 对于初始实施,您可以使用前三 3 行来应用您的逻辑。

标签: python arrays numpy nan mean


【解决方案1】:

使用pythonic方式:

import numpy as np

# get data from masked array
d = np.ma.getdata(masked_array)

# get the mean
masked_mean = [row[row!=-1].mean() for row in d]

【讨论】:

  • 我已经尝试过了,但是发生了错误。 TypeError:迭代 0 维数组。建议我做同样的事情。
  • 在哪一行?尝试检查您的 masked_array 是否显示正确。
  • 它的显示与我在问题中提到的相同。
  • 即使我尝试使用np.ma.masked_array() 打开变量。
  • 好的,我会试试的。感谢您的讨论和建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-13
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
相关资源
最近更新 更多