source

Python의 산술 평균(평균의 한 종류) 계산

factcode 2022. 10. 27. 22:59
반응형

Python의 산술 평균(평균의 한 종류) 계산

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

나는 표준 도서관에는 아무것도 모른다.다만, 다음과 같은 것을 사용할 수 있습니다.

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

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

numpy에는 가 있습니다.

NumPy에는 산술 평균인a 가 있습니다.사용법은 다음과 같습니다.

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

사용방법:

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

Python 3.4부터 사용 가능합니다.3.1~3.3 사용자의 경우 이전 버전의 모듈을 PyPI에서 이름으로 사용할 수 있습니다. 변경만 하면 됩니다.statistics로.stats.

넌 멍하거나 찌릿찌꺼칠꺼칠한 것도 아니고...

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

skipy 사용:

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)

업데이트: 2019-12-15

Python 3.8은 통계 모듈fmean 함수를 추가하였습니다.어느 쪽이 더 빠르고 항상 플로트가 반환됩니다.

데이터를 부동으로 변환하고 산술 평균을 계산합니다.

이것은 mean() 함수보다 빠르게 실행되며 항상 플로트를 반환합니다.데이터는 시퀀스가 될 수도 있고 반복될 수도 있습니다.입력 데이터 세트가 비어 있으면 StatisticsError가 발생합니다.

fmean([3.5, 4.0, 5.25])

4.25

버전 3.8의 신기능

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

python > = 3.8을 사용하는 경우 에 소개된 함수를 사용할 수 있습니다.statistics표준 라이브러리의 일부인 모듈:

>>> from statistics import fmean
>>> fmean([0, 1, 2, 3])
1.5

이 속도보다statistics.mean하지만 데이터 포인트를 변환합니다.float특정 경우에 따라서는 정확도가 떨어질 수 있습니다.

실장은 이쪽에서 보실 수 있습니다.

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)

나는 항상 생각했다.avgbuiltins/stdlib은 다음과 같이 단순하기 때문에 생략됩니다.

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

로컬 사용에 관한 모든 경고는 이미 발신자 코드로 처리되어 있습니다.

주의사항:

  1. non-valuous result: 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)))

다른 사람들은 이미 매우 좋은 답변을 올렸지만, 몇몇 사람들은 여전히 Mean(평균)을 찾는 고전적인 방법을 찾고 있을 수 있기 때문에, 나는 여기에 이것을 올린다(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

반응형