Рассчитать среднее значение для нескольких списков разной длины - PullRequest
0 голосов
/ 02 апреля 2019

Предположим, у меня есть следующие списки (может быть более трех списков):

l1 = [4,5,10,20,13]
l2 = [3,7,11]
l3 = [10,40,50,60]

как я могу рассчитать среднее значение для элементов для этих списков следующим образом, учитывая, что они имеют разную длину?

avg = [(4+3+10)/3, (5+7+40)/3, (10+11+50)/3, (20+?+60)/3, (13+?+?)/3 ] 

Среднее значение можно использовать для построения среднего значения этих списков.Одна идея состоит в том, чтобы усечь все до длины самого короткого списка, но должен быть лучший способ.

Спасибо.

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

В чистом Python это работа для zip_longest из модуля itertools:

In [15]: l = [ 
    ...:     [1, 2, 3, 4], 
    ...:     [2, 4], 
    ...:     [3, 3, 3] 
    ...: ]                                                                                 

In [16]: list(zip_longest(*l, fillvalue=0))                                                
Out[16]: [(1, 2, 3), (2, 4, 3), (3, 0, 3), (4, 0, 0)]

In [17]: [sum(column)/len(l) for column in zip_longest(*l, fillvalue=0)]                   
Out[17]: [2.0, 3.0, 2.0, 1.3333333333333333]
0 голосов
/ 02 апреля 2019

Если у вас есть все ваши списки в одном большом списке, одно из решений будет:

l1 = [4,5,10,20,13]
l2 = [3,7,11]
l3 = [10,40,50,60]

ls = [l1, l2, l3]

pd.DataFrame(ls).mean(axis = 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...