Programming

목록의 평균 찾기

procodes 2020. 2. 19. 22:16
반응형

목록의 평균 찾기


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

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에서 일했습니다.


또는 pandasSeries.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

그리고 전체 문서 :

https://pandas.pydata.org/pandas-docs/stable/10min.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



반응형