Programing

파이썬에서 산술 평균 (한 유형의 평균) 계산

lottogame 2020. 4. 3. 08:10
반응형

파이썬에서 산술 평균 (한 유형의 평균) 계산


숫자 목록의 산술 평균 (한 유형의 평균)을 계산하기 위해 Python에 내장 또는 표준 라이브러리 방법이 있습니까?


표준 라이브러리에 아무것도 없습니다. 그러나 다음과 같은 것을 사용할 수 있습니다.

def mean(numbers):
    return float(sum(numbers)) / max(len(numbers), 1)

>>> mean([1,2,3,4])
2.5
>>> mean([])
0.0

numpy에는이 numpy.mean()있습니다.


NumPy는 numpy.mean산술 평균 인 a를가집니다 . 사용법은 다음과 같이 간단합니다.

>>> import numpy
>>> a = [1, 2, 4]
>>> numpy.mean(a)
2.3333333333333335

사용 statistics.mean:

import statistics
print(statistics.mean([1,2,4])) # 2.3333333333333335

파이썬 3.4부터 사용할 수 있습니다. 3.1-3.3 사용자의 경우 PyPI에서 이전 버전의 모듈을 이름 아래에서 사용할 수 있습니다 stats. 로 변경 statistics하십시오 stats.


당신은 numpy 또는 scipy가 필요하지 않습니다 ...

>>> a = [1, 2, 3, 4, 5, 6]
>>> print(sum(a) / len(a))
3

scipy를 사용하십시오 :

import scipy;
a=[1,2,4];
print(scipy.mean(a));

떠 다니는 캐스팅 대신 다음을 수행 할 수 있습니다.

def mean(nums):
    return sum(nums, 0.0) / len(nums)

또는 람다를 사용하여

mean = lambda nums: sum(nums, 0.0) / len(nums)

from statistics import mean
avarage=mean(your_list)

예를 들어

from statistics import mean

my_list=[5,2,3,2]
avarage=mean(my_list)
print(avarage)

결과는

3.0

def avg(l):
    """uses floating-point division."""
    return sum(l) / float(len(l))

예 :

l1 = [3,5,14,2,5,36,4,3]
l2 = [0,0,0]

print(avg(l1)) # 9.0
print(avg(l2)) # 0.0

def list_mean(nums):
    sumof = 0
    num_of = len(nums)
    mean = 0
    for i in nums:
        sumof += i
    mean = sumof / num_of
    return float(mean)

나는 항상 avg내장 / stdlib에서 생략 된 것으로 가정합니다.

sum(L)/len(L) # L is some list

그리고 로컬 사용에 대한 호출자 코드에서 모든주의 사항이 이미 해결되었습니다 .

주목할만한주의 사항 :

  1. 비 플로트 결과 : python2에, 9/4는 해결, 사용 2. float(sum(L))/len(L)또는from __future__ import division

  2. 0으로 나누기 : 목록이 비어있을 수 있습니다. 해결하려면 :

    if not L:
        raise WhateverYouWantError("foo")
    avg = float(sum(L))/len(L)
    

귀하의 질문에 대한 정답은를 사용하는 것 statistics.mean입니다. 그러나 재미를 위해 여기에 len()함수를 사용하지 않는 평균 버전이 있으므로 다음과 같은 기능을 statistics.mean지원하지 않는 생성기에서 사용할 수 있습니다 len().

from functools import reduce
from operator import truediv
def ave(seq):
    return truediv(*reduce(lambda a, b: (a[0] + b[1], b[0]), 
                           enumerate(seq, start=1), 
                           (0, 0)))

다른 사람들은 이미 좋은 답변을 게시했지만 일부 사람들은 여전히 ​​평균 (avg)을 찾는 고전적인 방법을 찾고있을 수 있으므로 여기 에이 코드를 게시합니다 (Python 3.6에서 테스트 됨).

def meanmanual(listt):

mean = 0
lsum = 0
lenoflist = len(listt)

for i in listt:
    lsum += i

mean = lsum / lenoflist
return float(mean)

a = [1, 2, 3, 4, 5, 6]
meanmanual(a)

Answer: 3.5

참고 URL : https://stackoverflow.com/questions/7716331/calculating-arithmetic-mean-one-type-of-average-in-python

반응형