在不考虑NaN值的情况下平均数组中的不同层

时间:2020-08-11 13:03:48

标签: python arrays numpy nan mean

我在三层(从NetCDF文件访问)中屏蔽了数组数据,如下所示。我想平均这三层,而在平均时不考虑NaN值(此处-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]]

1 个答案:

答案 0 :(得分: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]