파이썬/numpy

작업 3 : np.random 메소드 살펴보기

이석사 중 2022. 4. 7. 23:03
728x90

제가 예전에 설명 드렸던 numpy라는 라이브러리에는

랜덤하게 난수를 생성해주는 random이라는 함수가 있습니다

하지만 아무리 난수라고 해도 지정된 범위 내에서 생성을 해줍니다

 

범위는 대표적으로 3개가 있습니다

 

첫 번째는 np.random.rand 입니다 (np는 numpy의 약자로 앞에서 라이브러리를 임포트한걸 전제로 합니다)

np.random 부분은 numpy라는 라이브러리 내에 random이라는 메소드를 불러온겁니다

그리고 rand는 구체적인 범위를 알려주는 부분입니다

 

rand의 경우 0보다 크거나 같고 1보다 작은 범위 내에서 균일한 분포의 난수를 생성해줍니다

 

EX) np.random.rand(5) => array([0.31912849, 0.50176702, 0.36029099, 0.29524596, 0.84087018])

 

np.random.rand(5, 2) => array([[0.38829117, 0.46683553],

                                         [0.45435497, 0.88771764],

                                         [0.74737847, 0.11191308],

                                         [0.38632711, 0.45830565],

                                         [0.63803833, 0.21077754]])

 

이렇게 출력이 됩니다. 

1차원은 물론 2차원으로 행렬 형태로도 출력이 가능합니다


다음은 np.random.randint 입니다

이거 같은 경우는 아주 쉽습니다 메소드 마지막에 int가 적혀 있듯이 랜덤한 integer, 즉 정수를 뽑아주는 겁니다

 

EX) np.random.randint(1, 6, 3) => array([1, 2, 2])

 

괄호 안에 1, 6은 1부터 6까지라는 뜻이고 3은 갯수를 의마합니다예를 들어 (1, 10, 5)라면 1부터 10중에 5개의 정수를 뽑으라는 의미가 됩니다

 

마지막은 오늘 그려볼 표준정규분포와 연관된 np.random.randn 입니다이것도 메소드 마지막에 붙은 n이 normal-distribution을 의미합니다

이 그림은 표준 정규 분포를 그린 그래프 입니다

표준 정규분포는 평균이 0이고, 표준편차가 1인 정규분포N(0, 12)을 표준정규분포라 합니다

표준 정규분포식을 파이썬으로 작성하면

y = ((1 / (np.sqrt(2 * np.pi) * sigma)) * np.exp(-0.5 * (1 / sigma * (bins - mu)) **2)) 이렇게 표현이 됩니다
그럼 아까 말했듯이 randn이 표준 정규분포를 만족 시키며 난수를 생성하는지 확인해 봅시다

 

728x90

'파이썬 > numpy' 카테고리의 다른 글

Numpy에 대해 알아보자  (0) 2021.10.07