total = 0
count = 0
numbers = input("Enter a number : (<Enter Key> to quit)")
while numbers != "":
try:
x = float(numbers)
count += 1
total = total + x
except ValueError:
print('NOT a number! Ignored..')
numbers = input("Enter a number : (<Enter Key> to quit)")
avg = total / count
print("\n average is", avg)
평균을 구하기 위해서는 숫자들의 총합
이 필요할 뿐, 숫자들을 배열,변수로 저장하지 않아도 된다. 그래서 코드에서 숫자를 total
이라는 변수에 계속 할당하고 그 시점 까지의 총합만을 기억해 두었다.
아래처럼 숫자 입력,합산이 반복 시행
total = 0.0
number = float(input("enter the number: "))
total = total + number
number = float(input("enter the number: "))
total = total + number
...
아래 수식은 표준편차를 구하는 공식이다.
여기서 s는 표준편차(std) x는 입력받은 숫자들
n은 입력받은 샘플의 개수
는 평균
입니다.**
이제는 입력받은 모든 숫자들을 저장해둘 필요가 생겼다.
이럴 때는 데이터 값 전체를 하나의 객체에 순서대로 모아 놓을 수 있어야 사용하기 편리하다
파이썬은 이런 기능을 가진 리스트(list)라는 자료구조를 제공한다.
X라는 변수에 순서대로 저장하는 수학적 표기법
중앙값은 주어진 숫자를 크기 순서대로 배치할 대 가장 중앙에 위치하는 숫자
중앙이라는 위치는 그 숫자의 총합이 홀수이냐 짝수이냐에 따라 달라진다.
ex)
만약 숫자가 1, 3, 3, 6, 7, 8, 9 라면, 중앙값은 6입니다.
만약 숫자가 1, 3, 3, 7, 8, 9 라면, 중앙값은 (3 + 7) / 2 = 5입니다.
즉 총개수 n인 숫자를 순서대로 배열했을때,
n이 홀수 이면 n/2을 반올림한 순서의 값이 중앙값
ex) 위에서는 7/2 = 3.5 반올림 = 4 , 4번째 숫자가 중앙값
n이 짝수라면 n/2번째 값과 ((n/2 +1)번째 값의 중앙값
ex) 위에서는 6/2=3, ((6/2)+1)=4 이므로 3번째 값과 4번째 값이 중앙값이 된다.
중앙값 구하는 코드 구현
def median(nums): # nums : 리스트를 지정하는 매개변수
nums.sort() # **sort()**로 리스트를 **오름차순** 순서대로 정렬
size = len(nums)
p = size // 2
if size % 2 == 0: # 리스트의 개수가 짝수일때
pr = p # 4번째 값
pl = p-1 # 3번째 값
mid= float((nums[pl]+nums[pr])/2)
else: # 리스트의 개수가 홀수일때
mid = nums[p]
return mid
print('X :', X)
median(X) # 매개변수의 값으로 X를 사용함
Numpy는 Numerical Python 줄임말로, 과학 계산용 고성능 컴퓨팅과 데이터 분석에 필요한 파이썬 패키지
파이썬 기본 패키지 관리자인 pipdksdpsms NumPy가 없으므로 새로 설치
기본적으로 포함 되어 있기도 하지만
**conda list , grep numpy 명령어로 설치여부 확인**
**pip install numpy 설치 명령어**
ndarray
데이터 타입 지원Numpy를 사용하기 위해 **ndarray**
객체를 만들어야 한다.
ndarray 객체를 이용하면 파이썬에서 사용하는 대규모 데이터 집합을 n차원 배열로 담을 수 있다.
import numpy as np
A = np.arange(5)
# [0 1 2 3 4]
B = np.array([0,1,2,3,4])
# [0 1 2 3 4]
C = np.array([0,1,2,3,'4'])
# ['0' '1' '2' '3' '4']
C의 경우 ‘4’가 하나 들어갔을 뿐인데 0,1,2,3 모두 문자열로 바뀌었다.
numpy.array도 array이므로 모든 요소 타입을 동일해야 한다.
**문자열을 모두 숫자로 바꿀 수는 없지만 숫자는 모두 문자열로 바꿔 줄 수 있다.**
그래서 숫자만 있던 ndarray에 문자열이 들어가면 모든 숫자를 문자열로 해석해서 array요건을 맞춰준다.
의도가 이런게 아니었다면 예상치 못할 부작용 생길 수 있으니 유의
주의할 점은 모양을 바꾸기 전후 행렬의 총 원소 개수(size)가 맞아야 한다.