2022.05.24 - [개발 이야기/Python] - [코딩 테스트] 파이썬 코딩테스트 핵심 요약 (CheatSheet) - 코테 1시간전에 꼭 보자.
2022.05.08 - [개발 이야기/Python] - [음성인식 - 6라인] 가장 쉬운 음성인식 (STT) 해 보기
2022.04.30 - [개발 이야기] - [코테] 코딩 테스트 플랫폼 4종 - 백준, 리트코드, 프로그래머스, 코드시그널
2021.12.16 - [개발 이야기/Python] - 파이썬 오디오 라이브러리 Top 5종 (Python Audio Library )
2020.12.16 - [분류 전체보기] - [개발] 피보나치(Fibonacci) 수열 구현 7가지 방법 - 파이썬 실습/확인 바로하기
2020.05.09 - [개발 이야기] - [개발] 파이썬 문법 5분만에 읽히기 - 파이썬 기본 문법 요약/정리 8 가지
2018.03.03 - [개발 이야기/Python] - 피보나치(Fibonacci) 수열을 구현하는 7가지 방법 - 파이썬(Python) 피보나치 구현 7선
몇몇 코딩 테스트 문제를 풀다 보면 Easy 문제로 대표값을 출력하는 문제들이 몇몇 볼 수 있다.
대표적인 통계값으로 평균(Mean or average), 중위값 (median), 최빈값 (Mode)들이 자주 제시되곤 한다.
예제를 위해서, 주어진 numerical array `list_nums`가 다음과 같다고 하자.
list_nums = [16, 12, 28, 8, 18, 17, 28, 24, 5, 4, 12, 16, 8, 4,4,4]
list_nums를 정렬하면 다음과 같다.
sorted(list_nums)
# [4, 4, 4, 4, 5, 8, 8, 12, 12, 16, 16, 17, 18, 24, 28, 28]
특별히 제약 사항이 주어지지 않는다면, 굳이 순수 Python으로 구할 필요가 있을까 싶다. 생산성을 위해서, 제약사항이 없다면, `Numpy`, `Pandas`, `Scipy`, `collections` 등을 사용해 주자
Python은 수치를 주로 다루기 때문에, `Numpy` 또는 `scipy`등의 패키지를 사용한다면 다음과 같이 쉽게 구할 수 있다.
import numpy as np
mean = np.mean(list_nums)
print(f'mean: {mean}') # mean: 13.0
numpy.mean() 으로 구할 수 있다. pandas의 경우도 유사하다.
import numpy as np
median = np.median(list_nums)
print(f'median: {median}') # median: 12.0
numpy.median() 으로 구할 수 있다.
from scipy import stats
mode = stats.mode(list_nums)[0]
print(f' mode : {mode[0]}') # mode : 4
scipy.stats.mode()로 구할 수 있다.
경우에 따라서는 알고리즘 구현 역량을 보기 위해서, Numpy 등의 패키지 사용이 제한 되는 경우가 있다. `pip` 자체가 실행이 되지 않는 경우도 존재 한다. Numpy, Scipy, Pandas 등 수치관련 패키지 없이 순수 Python만을 사용하여 구하는 경우 아래와 같이 코딩할 수 있다. ( dictionary 관련 collections 도 제외한 순수 Python이다.)
list_nums = [16, 12, 28, 8, 18, 17, 28, 24, 5, 4, 12, 16, 8, 4,4,4]
mean = sum(list_nums)/len(list_nums)
n = len(list_nums)
print(f' 1. mean : {mean}')
기본제공 함수인 sum()과 len()을 활용하여 "전체합/길이"로 구할 수 있다.
list_nums = [16, 12, 28, 8, 18, 17, 28, 24, 5, 4, 12, 16, 8, 4,4,4]
n = len(list_nums)
list_sorted = sorted(list_nums)
median = (list_sorted[n//2] + list_sorted[n//2-1])/2 if n%2==0 else list_sorted[n//2]
print(f' median : {median}')
정렬 후 순서상 중간에 있는 값을 구한다.
짝수인 경우 중간에 있는 값 앞뒤 숫자의 평균을 구한다.
list_nums = [16, 12, 28, 8, 18, 17, 28, 24, 5, 4, 12, 16, 8, 4,4,4]
freq = {}
for v in list_nums:
freq.setdefault(v,0)
freq[v] +=1
mode_value, mode_freq = max(freq.items(), key=lambda x: x[1])
print(f' mode : {mode_value}' )
우선 값들이 가지고 있는 빈도수를 구한다. --> freq
빈도수 freq에서 가장 많은 count를 가진 숫자 `mode_value`를 구한다.
`collections` 사용이 가능한 경우는 Counter()를 통해서 조금 편하게 구할 수 있다.
[Python] 문자열 구조화 4종 : 문자열 포맷스트링 (0) | 2022.05.08 |
---|---|
[음성인식 - 6라인] 가장 쉬운 음성인식 (STT) 해 보기 (0) | 2022.05.08 |
파이썬 오디오 라이브러리 Top 5종 (Python Audio Library ) (2) | 2021.12.16 |
[python] PIP 버그 / PIP 오류 해결 (MacOS에서 pip 21.1.x 버그) (2) | 2021.07.16 |
[파이썬] IDE 없이 블로그에서 Python 바로 실습/공부 (0) | 2020.12.05 |
댓글 영역