Numpy数组平均函数在平均计算中不排除屏蔽元素

时间:2015-07-31 13:52:06

标签: python arrays numpy

我是python编程的新手,如果我的问题太基础,请原谅我。但我试图使用masked_array计算三个数组的平均值,以产生第三个数组,而不使用值小于零的元素。使用以下步骤:

onAfterRendering

我认为(来自文档)如果在具有掩码值的数组上使用numpy数组均值函数,则在计算均值时不会考虑它们(掩码值)。我希望结果是

setTimeout

请问,是否有人提供了一些关于如何使用numpy.ma.masked_array存档的提示?

1 个答案:

答案 0 :(得分:1)

问题是np.array(d)不会创建蒙版数组。当a列表中的数组组装成更大(未屏蔽)的数组时,d中的掩码会丢失。

解决此问题的一种方法是替换它:

result = np.array(d).mean(axis=0)

result = masked_array(d).mean(axis=0)

E.g:

In [27]: result = masked_array(d).mean(axis=0)

In [28]: result
Out[28]: 
masked_array(data =
 [[2.5 3.5 3.0 4.5]
 [5.666666666666667 1.3333333333333333 4.333333333333333 2.3333333333333335]
 [9.333333333333334 5.0 2.0 3.6666666666666665]
 [1.5999999999999999 5.003333333333333 1.3333333333333333
  1.7333333333333334]],
             mask =
 [[False False False False]
 [False False False False]
 [False False False False]
 [False False False False]],
       fill_value = 1e+20)