Python 不同长度、平均值和标准偏差的多个列表
Python multiple lists of different lengths, averages and standard deviations
鉴于下面的列表数组,我希望能够创建一个新列表,给出列的平均值和标准差
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])
nanmean
and nanstd
分别计算平均值和标准差,并忽略 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.]])
并计算每行的均值和标准差,忽略 NaN
s。 ddof
参数代表自由度,我根据你想要的输出将其设置为 1(默认为 0)
鉴于下面的列表数组,我希望能够创建一个新列表,给出列的平均值和标准差
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])
nanmean
and nanstd
分别计算平均值和标准差,并忽略 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.]])
并计算每行的均值和标准差,忽略 NaN
s。 ddof
参数代表自由度,我根据你想要的输出将其设置为 1(默认为 0)