从 N-1 个样本计算最低 Ave 和 STDEV

Calculate Lowest Ave and STDEV from N-1 Sample

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

我有 96 行四重样本:96x4 numpy 数组中总共有 384 个样本。

对于每一行,我想:

  1. 将一个样本一式四份取出,变成一式三份

    [30,38,23,21] becomes [38,23,21]
    
  2. 计算这些一式三份样本的均值和标准差

    mean = 27.33, stdev = 9.29
    
  3. 放回那个样本,使它们再次一式四份

    [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 循环的函数,但它变得又长又难看。我需要更聪明的建议。

我得出以下结论:

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

我做了一个快速测试,它似乎有效。不过请注意,这不是目前最快的选择,但可读性很强。