반응형
파이썬, reduce를 이용한 평균, 분산, 팩토리얼 계산
글. 오상문 sualchi@daum.net
파이썬의 functools 내장 모듈의 reduce() 함수는 주로 누적 집계를 하기 위해서 사용합니다.
기본 문법은 다음과 같습니다.
reduce( 집계함수, 데이터집합 [, 초기값] )
초기값을 기준으로 데이터 루프를 돌면서 집계 함수를 계속해서 적용합니다. 초기값을 생략하면 처음값이 사용됩니다.
집계함수의 첫번째 인자는 누적된 값을 계속 갱신합니다.
두번째 인자는 데이터 집합에서 현재 처리할 값입니다. 현재값은 루프 돌면서 계속 바뀝니다.
다음 예제는 reduce를 이용하여 1~N 합을 구하는 예제입니다.
from functools import reduce
def total(N): # 1~N 합
return reduce(lambda a, b: a+b, range(1, N+1))
print("1~100 합:", total(100))
# 1~100 합: 5050
다음 예제는 reduce를 이용하여 팩토리얼을 구하는 예제입니다.
from functools import reduce
def factorial(N): # 팩토리얼
return reduce(lambda a, b: a*b, range(1, N+1))
print("10!:", factorial(10))
# 10!: 3628800
다음 예제는 reduce를 이용하여 평균, 분산 계산을 합니다.
from functools import reduce
def average(data): # 평균
return reduce(lambda a, b: a+b, data)/len(data)
def variance(data, avg): # 분산
return reduce(lambda a, b: a+b, map(lambda s:(s-avg)**2, data))/len(data)
scores = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
avg = average(scores)
print("평균:", avg)
print("분산:", variance(scores, avg))
# 평균: 55.0
# 분산: 825.0
이상.
반응형
'Python 기초' 카테고리의 다른 글
파이썬 리스트를 문자열로, 문자열을 리스트로 변환하기 (0) | 2021.02.15 |
---|---|
파이썬, "Hello, world!" 10줄 출력하는 여덟 가지 예제 (0) | 2021.02.14 |
아나콘다 예전 버전 설치하기 (0) | 2021.02.02 |
파이썬, isnumeric(), isdigit(), isdecimal() 비교 예제 (0) | 2021.01.28 |
파이썬, pandas를 이용하여 엑셀 파일 읽기, 추가, 저장하기 (0) | 2021.01.24 |