Python 具有空值的平均数组
可能重复:Python 具有空值的平均数组,python,arrays,numpy,null,average,Python,Arrays,Numpy,Null,Average,可能重复: 我正在研究numpy,我有许多大小和形状相同的阵列。它们是500*500。它有一些空值。我想要一个数组,它是原始数组的一个元素一个元素平均值的结果。例如: A=[ 1 Null 8 Null; Null 4 6 1] B=[ 8 5 8 Null; 5 9 5 3] 生成的数组应类似于: C=[ 4.5 5 8 Null; 5 6.5 5.5 2] 我该怎么做呢?更新:从NumPy 1.8开始,您可以使用而不是scipy.stats.nanmean 如果您有scipy,您可以
我正在研究numpy,我有许多大小和形状相同的阵列。它们是500*500。它有一些空值。我想要一个数组,它是原始数组的一个元素一个元素平均值的结果。例如:
A=[ 1 Null 8 Null; Null 4 6 1]
B=[ 8 5 8 Null; 5 9 5 3]
生成的数组应类似于:
C=[ 4.5 5 8 Null; 5 6.5 5.5 2]
我该怎么做呢?更新:从NumPy 1.8开始,您可以使用而不是
scipy.stats.nanmean
如果您有
scipy
,您可以使用:
您可以找到其他仅限numpy(屏蔽阵列)的解决方案。即
None
,而不是0
)
lst = [A, B]
def mean(nums):
return float(sum(nums)) / len(nums) if nums else 0
C = [mean(filter(None, col)) for col in zip(*list)]
这里的
Null
到底是什么?不,我的意思是在Python/NumPy中没有所谓的Null
。它是numpy.nan
,None
还是什么?np.ma的一个优点是它可以处理整数数组,而nan…
函数需要浮点数组作为输入。@PierreGM:啊,是的,因为整数数组中不允许使用np.nan
s。谢谢你指出这一点。如果你没有scipy,还有一个问题。@rjf:谢谢你指出这一点。
lst = [A, B]
def mean(nums):
return float(sum(nums)) / len(nums) if nums else 0
C = [mean(filter(None, col)) for col in zip(*list)]