Python 不同长度、平均值和标准差的多个列表

标签 python list mean stdev

鉴于下面的列表数组,我希望能够创建一个新列表,给出列的平均值和标准差

a = [ [1, 2, 3],
      [2, 3, 4],
      [3, 4, 5, 6],
      [1, 2],
      [7, 2, 3, 4]]

所需结果

mean =  2.8, 2.6, 3.75, 5
STDEV=  2.48997992, 0.894427191, 0.957427108, 1.414213562

我发现下面的例子给出了平均值,这似乎工作得很好,但我不清楚如何适应标准差

import numpy as np
import numpy.ma as ma
from itertools import zip_longest

a = [ [1, 2, 3],
      [2, 3, 4],
      [3, 4, 5, 6],
      [1, 2],
      [7, 2, 3, 4]]


averages = [np.ma.average(ma.masked_values(temp_list, None)) for temp_list in zip_longest(*a)]


print(averages)

最佳答案

您可以使用这两行:

>>> np.nanmean(np.array(list(zip_longest(*a)),dtype=float),axis=1)
array([2.8 , 2.6 , 3.75, 5.  ])

>>> np.nanstd(np.array(list(zip_longest(*a)),dtype=float),axis=1,ddof=1)
array([2.48997992, 0.89442719, 0.95742711, 1.41421356])

nanmeannanstd分别计算平均值和标准差,并忽略nan。所以你将数组传递给它:

>>> np.array(list(zip_longest(*a)),dtype=float)
array([[ 1.,  2.,  3.,  1.,  7.],
       [ 2.,  3.,  4.,  2.,  2.],
       [ 3.,  4.,  5., nan,  3.],
       [nan, nan,  6., nan,  4.]])

并计算每行的平均值和标准差,忽略 NaNddof 参数代表自由度,我根据您所需的输出将其设置为 1(默认为 0)

关于Python 不同长度、平均值和标准差的多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52671807/

相关文章:

list - 如何将对象列表注入(inject)温莎城堡的构造函数中

python迭代仅选择包含特定字符的字符串

list - 如何在c#中使用OpenXml在excel文件的列/列中设置数据验证列表?

node.js - Jade 模板和 mustache 模板的比较和区别

python-2.7 - 使用 python/numpy 创建矩阵?

Python 碎片 : How to return nothing if xpath doesn't exist?

带换行符的字符串的Python格式

python - 使用具有 python 2 和 3 兼容性的 getpass

python - 将 Tensorflow 与多处理一起使用时无法腌制 'weakref' 对象

machine-learning - scikit-learn 在另一个特征的标称值组内估算特征的平均值