Среднее одного индекса пар чисел - PullRequest
1 голос
/ 27 марта 2020

У меня есть таблица вроде [[2,3], [7,6], [12,567], [18,4]]. Мне нужно среднее из элементов 2, 7, 12, 18.

def average(data):
    temp = []
    for x in data:
        temp.append(x[0])
    return np.average(temp)

Есть ли лучший способ?

Ответы [ 3 ]

1 голос
/ 27 марта 2020

вы можете использовать:

from statistics import mean
mean(e[0] for e in data)

или:

np.average([e[0] for e in data])

вывод:

9.75

или:

np.average(np.array(data)[:,0])

также Предложение @WillemVanOnsem велико:

np.array(data)[:,0].mean()

def average(data):
    np.average([e[0] for e in data])
0 голосов
/ 27 марта 2020

Мой ответ - ELI5-версия @ kederra c. Если вы получили это, пропустите это.

Ваше решение верное, мы просто выполним sh минимально, только в одном месте.

temp = []
for x in data:
    temp.append(x[0])

Сократите это до одной строки с listcomps . Я переименовываю x в row, мне нравятся имена переменных, которые щелкают сразу.

temp = [row[0] for row in data]

Вот и все; остальное ваше решение аккуратно.

return np.average(temp)

Удачи:)

0 голосов
/ 27 марта 2020

Также:

def average(data):
    return sum(x[0] for x in data)/len(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...