0

我需要帮助在 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 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 循环编写一个函数,但它变得太长且丑陋。我需要一个更聪明的方法的建议。

4

1 回答 1

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

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

于 2017-06-12T00:32:59.630 回答