1. 사전 준비

import numpy as np

 

2. 값 생성하기

np.linspace(n,m,p) : 2개의 주어진 수 n과 m을 정확히 p개로 나눈다

# 1과 10을 정확히 10개의 수로 나눠서 리스트를 만듦.
np.linspace(start = 1, stop = 10, num = 10)
# np.linspace(1,10,10) 만 써도 된다.

결과 : 

array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])
# 20과 300을 정확히 16개의 수로 나눠서 리스트를 만듦.
np.linspace(start = 20, stop = 300, num = 16)

결과 : 

array([ 20.        ,  38.66666667,  57.33333333,  76.        ,
        94.66666667, 113.33333333, 132.        , 150.66666667,
       169.33333333, 188.        , 206.66666667, 225.33333333,
       244.        , 262.66666667, 281.33333333, 300.        ])

 

np.random.randint(n,m) : n 이상, m 미만의 정수를 랜덤하게 생성한다.

# 0 이상 5 미만의 정수를 랜덤으로 생성. (0, 1, 2, 3, 4 중에 하나가 나온다.) (randint : random + int)
np.random.randint(5)

결과 :

3
# 2 이상 6 미만의 정수를 랜덤으로 생성. (2, 3, 4, 5 중에 하나가 나온다.)
np.random.randint(2, 6)

결과 :

2

 

랜덤 실수 생성 (자세한건 코드블럭 참조)

np.random.random()
np.random.random_sample()
np.random.ranf()
np.random.rand()

# 0 ~ 1 사이의 랜덤 실수를 생성. (randn : random + number)
np.random.rand()

---------------------------------------------------------------------------------------

# 랜덤한 실수 20개를 리스트로 생성. (이 때는 0 ~ 1 사이가 아니다.)
np.random.randn(20)

결과 : 

array([-0.52413966, -1.49840922,  0.05740143, -0.27651949, -0.78736519,
        0.44756177,  0.13649896,  1.63702168,  1.02890639, -0.89092169,
       -1.28288374,  0.91728318, -0.895534  ,  1.3650573 ,  0.37196063,
        0.73743382, -1.18261309,  2.37934605, -0.19565429,  0.20248202])
        
array([1.03535637e-01, 5.70023544e-01, 7.02572872e-04, 8.08045078e-01,
       6.13634034e-01, 6.48790214e-01, 7.50682286e-01, 9.37417620e-01,
       1.95263760e-01, 7.34810650e-01, 7.43717188e-01, 7.40501963e-01,
       4.81673827e-01, 5.54603665e-01, 1.84406698e-01, 1.48128889e-01,
       9.33908998e-01, 4.08030348e-01, 6.24358592e-01, 3.80156610e-01])
        
---------------------------------------------------------------------------------------        
        
# 랜덤한 실수를 5x2 매트릭스 리스트로 생성. (이 때는 0 ~ 1 사이가 아니다.)
np.random.randn(5,2)

결과 :

array([[ 0.00362083,  0.49833415],
       [ 1.2965561 ,  0.380651  ],
       [-2.25599144, -0.58614511],
       [ 0.32668623,  0.0905209 ],
       [-1.99152505, -1.45599583]])
       
array([[ 1.03019403e+00, -2.05672711e-01],
       [-1.01343691e+00, -6.37432377e-04],
       [ 2.31580811e+00, -8.23505164e-01],
       [-1.99565968e-02,  7.36097005e-01],
       [ 2.07247826e-01, -4.50134775e-01]])
더보기
np.random.random()
np.random.random_sample()
np.random.ranf()
np.random.rand()함수는 모두 동일한 기능을 한다.
단, .random() 함수와 .random_sample() 함수와 .ranf() 함수는 숫자 하나 또는 1차원 리스트만 만들 수 있다.
2차원 매트릭스 리스트는 rand()함수를 써야한다.

# 0 ~ 1 사이의 랜덤 실수를 생성.
np.random.random()

결과 :

0.44488185541123304

----------------------------------------------------------------------------------------

# 0 ~ 1 사이의 랜덤 실수 20개를 리스트로 생성.
np.random.random(20)

결과 :

array([0.81787883, 0.88138734, 0.83815106, 0.94111472, 0.75181428,
       0.21176745, 0.57356786, 0.23344622, 0.54272878, 0.63850807,
       0.0240863 , 0.75626471, 0.40106159, 0.2368877 , 0.13573899,
       0.37940687, 0.15843737, 0.37450627, 0.1753634 , 0.52339994])

np.random.random()
np.random.random_sample()
np.random.ranf()
np.random.rand()함수는 모두 동일한 기능을 한다.
단, .random() 함수와 .random_sample() 함수와 .ranf() 함수는 숫자 하나 또는 1차원 리스트만 만들 수 있다.
2차원 매트릭스 리스트는 rand()함수를 써야한다.

 

2. 평균, 분산, 표준편차 구하기

st1 = [100, 110, 90, 105, 95, 102, 98]
st2 = [100, 130, 70, 120, 80, 160, 40]
x = list (range(0, len(st1),))

import matplotlib.pyplot as plt

plt.plot(x,st1)
plt.plot(x,st2)

평균은 같지만 그래프 모양은 많이 다르다.

평균, 분산, 표준편차를 구해보자.

 

Numpy 이용

import numpy as np

# 평균
st1Mean = np.mean(st1)
st2Mean = np.mean(st2)
print('st1 average : {}, st2 average : {}'.format(st1Mean, st2Mean))

결과 :

st1 average : 100.0, st2 average : 100.0


import numpy as np

# 분산
st1Var = np.var(st1)
st2Var = np.var(st2)
print('st1 variance : {}, st2 variance : {}'.format(st1Var,st2Var))

결과 :

st1 variance : 36.857142857142854, st2 variance : 1400.0


import numpy as np

# 표준편차 (= sqrt(분산))
st1Std = np.std(st1)
st2Std = np.std(st2)
print('st1 standard deviation : {}, st2 standard deviation : {}'.format(st1Std,st2Std))

결과 :

st1 standard deviation : 6.07100838882165, st2 standard deviation : 37.416573867739416

 

Numpy 없이 구해보자 (표본표준편차 포함)

# 분산
temp = 0
for _ in st1:
    temp = temp + (st1Mean - _) ** 2

st1Len = len(st1)
variance = temp / st1Len
variance

결과 :

36.857142857142854


# 표준편차 (= sqrt(분산))
standardDeviation = np.sqrt(variance)
standardDeviation

결과 :

6.07100838882165


# 표본표준편차. 얘는 함수가 없어서 이렇게 직접 해야한다. 아... 엑셀은 위대하다.
sampleStandardDeviation = np.sqrt(temp / (st1Len - 1))
sampleStandardDeviation

결과 :

6.557438524302

 

+ Recent posts