Один из способов - заполнить пустых мест значением NaNs
, в результате чего получится двумерный массив, а затем использовать nan
конкретный c NumPy арифметический c инструменты, такие как nanmean
(вычислить среднее пропускание NaNs
) и c. вдоль соответствующей оси, например так -
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. ])
Другой способ - преобразовать в pandas фрейм данных таким образом, чтобы пустых мест заполнялось NaNs
, а затем использовать методы фрейма данных, которые счет для NaNs
изначально, вот так -
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. ])