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)
나는 항상 생각했다.avg
builtins/stdlib은 다음과 같이 단순하기 때문에 생략됩니다.
sum(L)/len(L) # L is some list
로컬 사용에 관한 모든 경고는 이미 발신자 코드로 처리되어 있습니다.
주의사항:
non-valuous result: python2의 경우 9/4은 2입니다.해결하려면 , 를 사용합니다.
float(sum(L))/len(L)
또는from __future__ import division
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
'source' 카테고리의 다른 글
Crypt(3) 및 CryptoJ로부터의 다른 출력 (0) | 2022.10.27 |
---|---|
볼륨을 마운트할 때 mariadb를 실행할 수 없습니다. (0) | 2022.10.27 |
비동기 콜에서 응답을 반환하려면 어떻게 해야 하나요? (0) | 2022.10.27 |
MySQL 루트 비밀번호 변경 (0) | 2022.10.27 |
Maria db에서 값이 null인 경우 null이 아닌 열에 기본값을 삽입하는 방법 (0) | 2022.10.27 |