Tuesday, May 29, 2007
Python 파이썬] 중앙값, 중간값, 메디안 구하기 함수; Median Function
파이썬에 메디안 함수가 있는 줄 알았는데 찾아보니 없는 것 같았습니다. 아래 소스에 정의된 getMedian 함수를 사용하면 중앙값(메디안)을 구할 수 있습니다.
업데이트: 기존의 파이썬 2.X용 소스를 3.X용에 맞게 약간 수정하여 올립니다.
파일명: example3X.py
아래 소스는 기존의 2.X용 소스입니다.
소스 파일명: example.py
▶▶ Python/파이썬] 리스트(배열) 합계, 산술 평균 구하기; List-Array Sum, Average (Mean)
Python: 리스트(배열)의 중앙값 계산 예제
업데이트: 기존의 파이썬 2.X용 소스를 3.X용에 맞게 약간 수정하여 올립니다.
파일명: example3X.py
#!/usr/bin/python
# -*- coding: cp949 -*-
# 중앙값 구하기 함수 정의
# 크기 순으로 이미 정렬된 배열을 입력해야 함
# 범용성을 위해 이 함수 자체에는 정렬 기능이 없음
def getMedian(a):
a_len = len(a) # 배열 요소들의 전체 개수 구하기
if (a_len == 0): return None # 빈 배열은 에러 반환
a_center = int(a_len / 2) # 요소 개수의 절반값 구하기
if (a_len % 2 == 1): # 요소 개수가 홀수면
return a[a_center] # 홀수 개수인 배열에서는 중간 요소를 그대로 반환
else:
return (a[a_center - 1] + a[a_center]) / 2.0 # 짝수 개 요소는, 중간 두 수의 평균 반환
# 프로그램 본체 시작
a = [ 1, 2, 3 ]
a.sort()
print(getMedian(a))
# 출력 결과: 2
a = [ 1, 2, 3, 4 ]
a.sort()
print(getMedian(a))
# 출력 결과: 2.5
a = [ 4, 3, 1, 2 ]
a.sort()
print(getMedian(a))
# 출력 결과: 2.5
a = [ 1345, 1301, 1368, 1322, 1310, 1370, 1318, 1350, 1303, 1299 ]
a.sort()
print(getMedian(a))
# 출력 결과: 1320.0
a = [ 1, 2 ]
a.sort()
print(getMedian(a))
# 출력 결과: 1.5
a = [ 100 ]
a.sort()
print(getMedian(a))
# 출력 결과: 100
# -*- coding: cp949 -*-
# 중앙값 구하기 함수 정의
# 크기 순으로 이미 정렬된 배열을 입력해야 함
# 범용성을 위해 이 함수 자체에는 정렬 기능이 없음
def getMedian(a):
a_len = len(a) # 배열 요소들의 전체 개수 구하기
if (a_len == 0): return None # 빈 배열은 에러 반환
a_center = int(a_len / 2) # 요소 개수의 절반값 구하기
if (a_len % 2 == 1): # 요소 개수가 홀수면
return a[a_center] # 홀수 개수인 배열에서는 중간 요소를 그대로 반환
else:
return (a[a_center - 1] + a[a_center]) / 2.0 # 짝수 개 요소는, 중간 두 수의 평균 반환
# 프로그램 본체 시작
a = [ 1, 2, 3 ]
a.sort()
print(getMedian(a))
# 출력 결과: 2
a = [ 1, 2, 3, 4 ]
a.sort()
print(getMedian(a))
# 출력 결과: 2.5
a = [ 4, 3, 1, 2 ]
a.sort()
print(getMedian(a))
# 출력 결과: 2.5
a = [ 1345, 1301, 1368, 1322, 1310, 1370, 1318, 1350, 1303, 1299 ]
a.sort()
print(getMedian(a))
# 출력 결과: 1320.0
a = [ 1, 2 ]
a.sort()
print(getMedian(a))
# 출력 결과: 1.5
a = [ 100 ]
a.sort()
print(getMedian(a))
# 출력 결과: 100
아래 소스는 기존의 2.X용 소스입니다.
소스 파일명: example.py
#!/usr/bin/python
# -*- coding: cp949 -*-
# 중앙값 구하기 함수 정의
# 크기 순으로 이미 정렬된 배열을 입력해야 함
# 범용성을 위해 이 함수 자체에는 정렬 기능이 없음
def getMedian(a):
a_len = len(a) # 배열 요소들의 전체 개수 구하기
if (a_len == 0): return None # 빈 배열은 에러 반환
a_center = a_len / 2 # 요소 개수의 절반값 구하기
if (a_len % 2 == 1): # 요소 개수가 홀수면
return a[a_center] # 홀수 개수인 배열에서는 중간 요소를 그대로 반환
else:
return (a[a_center - 1] + a[a_center]) / 2.0 # 짝수 개 요소는, 중간 두 수의 평균 반환
# 프로그램 본체 시작
a = [ 1, 2, 3 ]
a.sort()
print getMedian(a)
# 출력 결과: 2
a = [ 1, 2, 3, 4 ]
a.sort()
print getMedian(a)
# 출력 결과: 2.5
a = [ 4, 3, 1, 2 ]
a.sort()
print getMedian(a)
# 출력 결과: 2.5
a = [ 1345, 1301, 1368, 1322, 1310, 1370, 1318, 1350, 1303, 1299 ]
a.sort()
print getMedian(a)
# 출력 결과: 1320.0
a = [ 1, 2 ]
a.sort()
print getMedian(a)
# 출력 결과: 1.5
a = [ 100 ]
a.sort()
print getMedian(a)
# 출력 결과: 100
# -*- coding: cp949 -*-
# 중앙값 구하기 함수 정의
# 크기 순으로 이미 정렬된 배열을 입력해야 함
# 범용성을 위해 이 함수 자체에는 정렬 기능이 없음
def getMedian(a):
a_len = len(a) # 배열 요소들의 전체 개수 구하기
if (a_len == 0): return None # 빈 배열은 에러 반환
a_center = a_len / 2 # 요소 개수의 절반값 구하기
if (a_len % 2 == 1): # 요소 개수가 홀수면
return a[a_center] # 홀수 개수인 배열에서는 중간 요소를 그대로 반환
else:
return (a[a_center - 1] + a[a_center]) / 2.0 # 짝수 개 요소는, 중간 두 수의 평균 반환
# 프로그램 본체 시작
a = [ 1, 2, 3 ]
a.sort()
print getMedian(a)
# 출력 결과: 2
a = [ 1, 2, 3, 4 ]
a.sort()
print getMedian(a)
# 출력 결과: 2.5
a = [ 4, 3, 1, 2 ]
a.sort()
print getMedian(a)
# 출력 결과: 2.5
a = [ 1345, 1301, 1368, 1322, 1310, 1370, 1318, 1350, 1303, 1299 ]
a.sort()
print getMedian(a)
# 출력 결과: 1320.0
a = [ 1, 2 ]
a.sort()
print getMedian(a)
# 출력 결과: 1.5
a = [ 100 ]
a.sort()
print getMedian(a)
# 출력 결과: 100
▶▶ Python/파이썬] 리스트(배열) 합계, 산술 평균 구하기; List-Array Sum, Average (Mean)
tag: python
Python | 파이썬
TypeError: list indices must be integers, not float
이런 에러가 나는데요.
파이썬 버전이 맞지 않아서 그런 것 같습니다. 저의 블로그에 있는 파이썬 소스는 모두 버전 2.X용인데, 지금 파이썬 최신 버전은 3.X입니다.
버전 2와 버전 3이 호환이 잘 안되어서 골치가 아프더군요-_-;;;
이 포스트의 소스를 수정하여 example3X.py 라는 이름으로 다시 올려 놓았습니다.
a_center = int(a_len / 2)
이렇게 캐스팅을 해주면 에러가 나지 않습니다.
<< Home