2017-06-12 76 views
0

我需要帮助编写python中的函数来计算N-1样本的平均值和标准偏差。从N-1样本计算最低平均值和STDEV

我有96行quarduplicate样本:在96x4 numpy阵列总共384个样本。

对于每一行,我想:

  1. 取出一式四份一个样品,使他们成为一式三份

    [30,38,23,21] becomes [38,23,21] 
    
  2. 计算平均和那些一式三份样品的标准偏差

    mean = 27.33, stdev = 9.29 
    
  3. 放回样本,使它们为druplicates再次

    [38,23,21] becomes [30,38,23,21] 
    
  4. 重复步骤1-3三次取出另一个样本每次

    [30,23,21]: mean = 24.67, stdev = 4.73 
    [30,38,21]: mean = 29.67, stdev = 8.50 
    [30,38,23]: mean = 30.33, stdev = 7.51 
    
  5. 查找那些计算出的数据当中具有最低的标准偏差的平均值

    [30,23,21]: mean = 24.67, stdev = 4.73 
    
  6. 继续前进到下一行并重复步骤1-4

  7. 输出是一个96X1阵列发现平均对于每个相应行

基本上我想的一式四份之一是异常值的假设下,计算平均值和标准偏差。

我试着编写一个嵌套for循环函数,但它变得太长和丑陋。我需要更聪明的方式提供建议。

回答

0

我想出了以下内容:

import numpy as np 

def bestMean(rows): 
    bestMeans = [] 
    for row in rows: 
     mean = [np.mean(row[:k] + row[k+1:]) for k in xrange(len(row))] 
     std = [np.std(row[:k] + row[k+1:]) for k in xrange(len(row))] 
     bestMeans.append((mean[np.argmin(std)], np.min(std))) 
    return bestMeans 

我做了一个快速测试,它似乎工作。但请注意,这不是最快的选择,但它很可读。