🗝 최빈값
- 빈도 수가 가장 많은 데이터
- 최대값 알고리즘을 이용하여 배열을 새로 만들고, 값이 나올 때마다 각 인덱스에 +1
class MaxAl:
def __init__(self,arr):
self.arr = arr
self.max = 0
self.maxNumIdx = 0
def setMax(self):
self.max = self.arr[0]
self.maxIdx = 0
for i, n in enumerate(self.arr):
if self.max < n:
self.max = n
self.maxIdx = i
def getMax(self):
return self.max
def getMaxIdx(self):
return self.maxIdx
import random as rd
nums = [rd.randint(0,10) for i in range(10)]
print(f'array : {nums}')
maxNum = MaxAl(nums)
maxNum.setMax()
maxResult = maxNum.getMax()
arIdx = [0 for i in range(maxResult+1)]
for i in nums:
arIdx[i] +=1
print(f'0-최대값까지 빈도 : {arIdx}')
newNum = MaxAl(arIdx)
newNum.setMax()
maxIdx = newNum.getMax()
maxNewNum = newNum.getMaxIdx()
print(f'최대값 : {maxNewNum}, 빈도 : {maxIdx}')
------------------------------------------------
array : [3, 5, 6, 0, 3, 6, 6, 3, 10, 8]
0-최대값까지 빈도 : [1, 0, 0, 3, 0, 1, 3, 0, 1, 0, 1]
최대값 : 3, 빈도 : 3
🗝 근사값
- 특정 값과 가장 가까운 값을 찾음.
import random as rd
array = rd.sample(range(0,50),10)
print(f'array : {array}')
inputNum = int(input('input Num : '))
nearNum = 0
minNum = 50 #데이터가 많을 때는 최고값 알고리즘을 사용할 것
for n in array:
absNum = abs(n-inputNum)
if absNum < minNum: #지금 차이가 전의 차이보다 작으면
minNum = absNum #지금 차이를 넣어준다.
nearNum = n #근사값에 지금 데이터를 넣어준다.
print(f'근사값 : {nearNum} 차이 : {minNum}')
---------------------------------------------
array : [7, 19, 23, 16, 32, 38, 3, 35, 20, 6]
input Num : 42
근사값 : 38 차이 : 4
cf. 최소값 알고리즘 이용
import random as rd
array = rd.sample(range(0,50),10)
print(f'array : {array}')
inputNum = int(input('input Num : '))
absArr = []
for i in range(len(array)):
absArr.append(abs(array[i]-inputNum))
print(f'차이 : {absArr}')
nearNum = absArr[0]
nearIdx = 0
for i,n in enumerate(absArr):
if nearNum > n:
nearNum = n
nearIdx = i
print(f'근사값 : {array[nearIdx]} 차이 : {nearNum}')
---------------------------------------------
array : [20, 41, 27, 2, 11, 3, 0, 10, 40, 45]
input Num : 21
차이 : [1, 20, 6, 19, 10, 18, 21, 11, 19, 24]
근사값 : 20 차이 : 1
🗝 평균
1) 기본 평균
import random as rd
array = rd.sample(range(1,100),10)
sum = 0
for i in array:
sum += i
avg = sum/len(array)
print(f'array : {array}')
print(f'avg : {round(avg,2)}')
--------------------------------------------
array : [8, 84, 63, 81, 11, 2, 73, 80, 65, 67]
avg : 53.4
2) 특정 범위의 평균
import random as rd
array = rd.sample(range(1,100),10)
sum = 0
targetNum = []
for i in array:
if i >= 50 and i <= 90:
sum += i
targetNum.append(i)
avg = sum/len(targetNum)
print(f'array : {array}')
print(f'target : {targetNum}')
print(f'avg : {round(avg,2)}')
--------------------------------------------------
array : [49, 13, 45, 29, 26, 79, 44, 89, 20, 71]
target : [79, 89, 71]
avg : 79.67
3) 정수만 뽑아 평균 구하기
array = [4, 5.12, 0, 5, 7.34, 9.1, 9, 3, 3.159, 1, 11, 12.789]
sum = 0
targetNum = []
for i in array:
if i - int(i) == 0:
sum += i
targetNum.append(i)
avg = sum/len(targetNum)
print(f'array : {array}')
print(f'target : {targetNum}')
print(f'avg : {round(avg,2)}')
--------------------------------------------------------------
array : [4, 5.12, 0, 5, 7.34, 9.1, 9, 3, 3.159, 1, 11, 12.789]
target : [4, 0, 5, 9, 3, 1, 11]
avg : 4.71
'Python > Python 기초' 카테고리의 다른 글
[파이썬 기초] 알고리즘 - 재귀, 하노이의 탑 (0) | 2022.05.13 |
---|---|
[파이썬 기초] 알고리즘 - 최대값, 최소값 (0) | 2022.05.12 |
[파이썬 기초] 알고리즘 - 정렬 (0) | 2022.05.06 |
[파이썬 기초] 알고리즘 - 검색,순위 (0) | 2022.05.06 |
[파이썬 기초] 딕셔너리(Dictionary) (0) | 2022.05.04 |