Python 不同长度阵列的numpy平均值/标准偏差

Python 不同长度阵列的numpy平均值/标准偏差,python,arrays,numpy,Python,Arrays,Numpy,我有一个大小为5的numpy数组列表。列表中的所有数组都具有不同的长度。我需要一个包含元素平均值的数组和一个包含标准差的数组。 例如: 我想: [10, 10, 10, 9, 8] and [1.3, 1.3, 1.3, 1.1, 0] (我组成了标准开发人员) 提前谢谢 一种方法是用nan填充空白位置,生成一个2D数组,然后使用nan特定的NumPy算术工具,如nanmean(计算平均值跳过nan)等,沿着适当的轴,如下所示- In [5]: import itertools # a is

我有一个大小为5的numpy数组列表。列表中的所有数组都具有不同的长度。我需要一个包含元素平均值的数组和一个包含标准差的数组。 例如:

我想:

[10, 10, 10, 9, 8] and
[1.3, 1.3, 1.3, 1.1, 0]
(我组成了标准开发人员)


提前谢谢

一种方法是用
nan
填充空白位置,生成一个2D数组,然后使用
nan
特定的NumPy算术工具,如
nanmean
(计算平均值跳过
nan
)等,沿着适当的轴,如下所示-

In [5]: import itertools

# a is input list of lists/arrays
In [48]: ar = np.array(list(itertools.zip_longest(*a, fillvalue=np.nan)))

In [49]: np.nanmean(ar,axis=1)
Out[49]: array([10., 10., 10.,  9.,  8.])

In [50]: np.nanstd(ar,axis=1)
Out[50]: array([1.63299316, 1.63299316, 1.63299316, 1.        , 0.        ])
In [16]: import pandas as pd

In [17]: df = pd.DataFrame(a)

In [18]: df.mean(0).values
Out[18]: array([10., 10., 10.,  9.,  8.])

In [19]: df.std(0,ddof=0).values
Out[19]: array([1.63299316, 1.63299316, 1.63299316, 1.        , 0.        ])
另一种方法是转换为pandas数据帧,以便用
nan
填充空白位置,然后使用本机解释
nan
的数据帧方法,如下所示-

In [5]: import itertools

# a is input list of lists/arrays
In [48]: ar = np.array(list(itertools.zip_longest(*a, fillvalue=np.nan)))

In [49]: np.nanmean(ar,axis=1)
Out[49]: array([10., 10., 10.,  9.,  8.])

In [50]: np.nanstd(ar,axis=1)
Out[50]: array([1.63299316, 1.63299316, 1.63299316, 1.        , 0.        ])
In [16]: import pandas as pd

In [17]: df = pd.DataFrame(a)

In [18]: df.mean(0).values
Out[18]: array([10., 10., 10.,  9.,  8.])

In [19]: df.std(0,ddof=0).values
Out[19]: array([1.63299316, 1.63299316, 1.63299316, 1.        , 0.        ])

太棒了-谢谢!我甚至没有想到NaN没有被包括在mean/std dev中。