【发布时间】:2015-07-31 13:52:06
【问题描述】:
我是python编程的新手,如果我的问题太基本,请原谅我。但我试图使用 masked_array 来计算三个数组的平均值以生成第三个数组,而不使用值小于零的元素。使用这些步骤:
import numpy as np
from numpy.ma import masked_array
d=[]
a = np.array([[-2,-3,-4,-6],[5,2,6,1],[9,3,2,4],[3,1,1,2]])
b = np.array([[3,4,2,4],[5,2,6,1],[9,3,2,4],[0.3,12,1,3]])
c = np.array([[2,3,4,5],[7,0,1,5],[10,9,2,3],[1.5,2.01,2,0.2]])
mask = (a <= 0).astype(int)
a = masked_array(a,mask)
d.append(a)
d.append(b)
d.append(c)
result = np.array(d).mean(axis=0)
print result
[[ 1. 1.33333333 0.66666667 1. ]
[ 5.66666667 1.33333333 4.33333333 2.33333333]
[ 9.33333333 5. 2. 3.66666667]
[ 1.6 5.00333333 1.33333333 1.73333333]]
我认为(根据文档)如果在具有掩码值的数组上使用 numpy 数组均值函数,则在计算平均值时不会考虑它们(掩码值)。我希望结果是
[[ 2.5 3.5 3. 4.5 ]
[ 5.66666667 1.33333333 4.33333333 2.33333333]
[ 9.33333333 5. 2. 3.66666667]
[ 1.6 5.00333333 1.33333333 1.73333333]]
请问,有人对我如何使用 numpy.ma.masked_array 进行存档有一些提示吗?
【问题讨论】:
-
这不是问题的一部分,但你可以写
d = [a,b,c]而不是追加。