您可以使用掩码数组:
>>> from numpy import ma, nan
>>> a = ma.array([[1,1,3], [3,4,2], [nan,nan,nan]], mask=[[0,0,0],[0,0,0],[1,1,1]])
>>> b = ma.array([[3,2,1], [3,4,2], [4,5,3]])
>>> c = ma.array([[4,3,2], [5,2,3], [nan,nan,nan]], mask=[[0,0,0],[0,0,0],[1,1,1]])
>>> X = ma.array([a, b, c])
然后在任何轴上取平均值将忽略掩码值:
>>> X.mean(axis=0)
masked_array(data =
[[2.66666666667 2.0 2.0]
[3.66666666667 3.33333333333 2.33333333333]
[4.0 5.0 3.0]],
mask =
[[False False False]
[False False False]
[False False False]],
fill_value = 1e+20)
>>> X.mean(axis=1)
masked_array(data =
[[2.0 2.5 2.5]
[3.33333333333 3.66666666667 2.0]
[4.5 2.5 2.5]],
mask =
[[False False False]
[False False False]
[False False False]],
fill_value = 1e+20)
>>> X.mean(axis=2)
masked_array(data =
[[1.66666666667 3.0 --]
[2.0 3.0 4.0]
[3.0 3.33333333333 --]],
mask =
[[False False True]
[False False False]
[False False True]],
fill_value = 1e+20)