[python] 목록의 평균 찾기

파이썬에서 평균 목록을 찾아야합니다. 이것은 지금까지 내 코드입니다

l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
print reduce(lambda x, y: x + y, l)

목록에 값을 합산하여 값을 나누는 방법을 모르겠습니다.



답변

Python 3.4 이상에서는 다음을 사용할 수 있습니다 statistics.mean()

l = [15, 18, 2, 36, 12, 78, 5, 6, 9]

import statistics
statistics.mean(l)  # 20.11111111111111

이전 버전의 Python에서는 할 수 있습니다

sum(l) / len(l)

파이썬 2에서는 lenfloat 나누기를 얻기 위해 float 로 변환해야합니다

sum(l) / float(len(l))

사용할 필요가 없습니다 reduce. 훨씬 느리고 Python 3에서 제거 되었습니다.


답변

l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
sum(l) / len(l)


답변

당신은 사용할 수 있습니다 numpy.mean:

l = [15, 18, 2, 36, 12, 78, 5, 6, 9]

import numpy as np
print(np.mean(l))


답변

통계 모듈은 한 파이썬 3.4에 첨가 . 평균이라는 평균 을 계산하는 기능이 있습니다. 제공 한 목록의 예는 다음과 같습니다.

from statistics import mean
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
mean(l)


답변

reduce()파이썬이 완벽하게 cromulent sum()함수를 가질 때 왜 이것을 사용 하겠습니까?

print sum(l) / float(len(l))

( float()파이썬이 부동 소수점 나누기를하도록 강제해야한다.)


답변

python> = 3.4를 사용하는 경우 통계 라이브러리가 있습니다.

https://docs.python.org/3/library/statistics.html

이런 방법으로 사용할 수 있습니다. 당신이 찾고 싶은 숫자의 목록이 있다고 가정 해 봅시다.

list = [11, 13, 12, 15, 17]
import statistics as s
s.mean(list)

그것은 너무 유용한 stdev, variance, mode, harmonic mean, median 등과 같은 다른 방법을 가지고 있습니다.


답변

캐스팅하여 플로팅하는 대신 합계에 0.0을 추가 할 수 있습니다.

def avg(l):
    return sum(l, 0.0) / len(l)