목록의 평균 찾기
파이썬에서 평균 목록을 찾아야합니다. 이것은 지금까지 내 코드입니다
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
print reduce(lambda x, y: x + y, l)
목록에 값을 합산하여 값을 나누는 방법을 모르겠습니다.
감소가 이미 합계를 반환하는 경우 남은 것은 나누기입니다.
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
print reduce(lambda x, y: x + y, l) / len(l)
비록 sum(l)/len(l)
당신이 람다 필요하지 것처럼 간단 할 것이다.
당신이 int로 대신 더 정확한 부동 결과를 원한다면 바로 사용 float(len(l))
대신에 len(l)
.
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
sum(l) / float(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)
sum(l) / float(len(l))
정답이지만 완전성을 위해 단일 감소로 평균을 계산할 수 있습니다.
>>> reduce(lambda x, y: x + y / float(len(l)), l, 0)
20.111111111111114
약간의 반올림 오류가 발생할 수 있습니다.
>>> sum(l) / float(len(l))
20.111111111111111
위의 옵션을 사용해 보았지만 작동하지 않았습니다. 이 시도:
from statistics import mean
n = [11, 13, 15, 17, 19]
print(n)
print(mean(n))
파이썬 3.5에서 일했습니다.
또는 pandas
의 Series.mean
방법을 사용하십시오.
pd.Series(sequence).mean()
데모:
>>> import pandas as pd
>>> l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
>>> pd.Series(l).mean()
20.11111111111111
>>>
문서에서 :
Series.mean(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)
¶
그리고 이것에 대한 문서는 다음과 같습니다.
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.mean.html
그리고 전체 문서 :
나는 Udacity의 문제를 해결하기 위해 비슷한 질문을했습니다. 내장 함수 대신 내가 코딩했습니다 :
def list_mean(n):
summing = float(sum(n))
count = float(len(n))
if n == []:
return False
return float(summing/count)
평소보다 훨씬 길지만 초보자에게는 상당히 도전적입니다.
초보자로서 방금 이것을 코딩했습니다.
L = [15, 18, 2, 36, 12, 78, 5, 6, 9]
total = 0
def average(numbers):
total = sum(numbers)
total = float(total)
return total / len(numbers)
print average(L)
평균 (일명 평균) 이상을 얻으려면 scipy 통계를 확인하십시오.
from scipy import stats
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
print(stats.describe(l))
# DescribeResult(nobs=9, minmax=(2, 78), mean=20.11111111111111,
# variance=572.3611111111111, skewness=1.7791785448425341,
# kurtosis=1.9422716419666397)
reduce
평균을 계산하는 데 사용하려면 지금까지 표시된 총 요소 수와 총 요소 수를 추적해야합니다. 그것은 목록의 사소한 요소가 아니기 때문에 reduce
접을 수있는 추가 인수를 전달해야 합니다.
>>> l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
>>> running_average = reduce(lambda aggr, elem: (aggr[0] + elem, aggr[1]+1), l, (0.0,0))
>>> running_average[0]
(181.0, 9)
>>> running_average[0]/running_average[1]
20.111111111111111
둘 다 정수 또는 10 이상의 10 진수 값에서 유사한 값에 가깝게 만들 수 있습니다. 그러나 실제로 부동 부동 값을 고려하면 둘 다 다를 수 있습니다. 접근하려는 목표에 따라 다를 수 있습니다.
>>> l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
>>> print reduce(lambda x, y: x + y, l) / len(l)
20
>>> sum(l)/len(l)
20
부동 값
>>> print reduce(lambda x, y: x + y, l) / float(len(l))
20.1111111111
>>> print sum(l)/float(len(l))
20.1111111111
@Andrew Clark는 그의 진술에 정확했다.
한다고 가정
x = [[-5.01,-5.43,1.08,0.86,-2.67,4.94,-2.51,-2.25,5.56,1.03], [-8.12,-3.48,-5.52,-3.78,0.63,3.29,2.09,-2.13,2.86,-3.33], [-3.68,-3.54,1.66,-4.11,7.39,2.08,-2.59,-6.94,-2.26,4.33]]
당신은이 알 수있는 x
당신이 얻을해야하는 경우 치수 3 * 10을 가지고 mean
당신이 입력 할 수 있습니다 각 행
theMean = np.mean(x1,axis=1)
잊지 마세요 import numpy as np
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
l = map(float,l)
print '%.2f' %(sum(l)/len(l))
다음 PYTHON 코드 를 사용하여 목록에서 평균을 찾으십시오 .
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
print(sum(l)//len(l))
이것을 쉽게 시도하십시오.
print reduce(lambda x, y: x + y, l)/(len(l)*1.0)
또는 이전에 게시 된 것
sum(l)/(len(l)*1.0)
1.0은 부동 소수점 나누기를 얻는 것입니다.
위의 두 가지 답변을 결합하여 reduce와 함께 작동하고 reduce L
함수 내부에서 사용할 수 있다고 가정하지 않는 다음을 생각해 냈습니다 .
from operator import truediv
L = [15, 18, 2, 36, 12, 78, 5, 6, 9]
def sum_and_count(x, y):
try:
return (x[0] + y, x[1] + 1)
except TypeError:
return (x + y, 2)
truediv(*reduce(sum_and_count, L))
# prints
20.11111111111111
다른 접근법을 추가하고 싶습니다.
import itertools,operator
list(itertools.accumulate(l,operator.add)).pop(-1) / len(l)
numbers = [0,1,2,3]
numbers[0] = input("Please enter a number")
numbers[1] = input("Please enter a second number")
numbers[2] = input("Please enter a third number")
numbers[3] = input("Please enter a fourth number")
print (numbers)
print ("Finding the Avarage")
avarage = int(numbers[0]) + int(numbers[1]) + int(numbers[2]) + int(numbers [3]) / 4
print (avarage)
참고 URL : https://stackoverflow.com/questions/9039961/finding-the-average-of-a-list
'Programming' 카테고리의 다른 글
편집 텍스트에 초점을 맞출 때 소프트 키보드를 표시하는 방법 (0) | 2020.02.19 |
---|---|
Java에서 난수 얻기 (0) | 2020.02.19 |
반사판에 대한 오픈 소스 대안? (0) | 2020.02.19 |
Java에서 SuppressWarnings ( "체크되지 않은") 란 무엇입니까? (0) | 2020.02.19 |
Series에서 DataFrame으로 Pandas GroupBy 출력 변환 (0) | 2020.02.19 |