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)]