본문 바로가기

Python/numpy

random 정리

rand()

주어진 shape을 가진 array를 생성하며, [0, 1) 범위에서 균일한 분포를 갖는다.

 

import numpy as np

a = np.random.rand(5)
print(a)

b = np.random.rand(2, 3)
print(b)
[0.41626628 0.40269923 0.80574938 0.67014962 0.47630372]

[[0.83739956 0.62462355 0.66043459]
 [0.96358531 0.23121274 0.68940178]]

 

randint()

[최소값, 최대값)의 범위에서 임의의 정수를 만든다. size 인수를 통해 shape을 지정할 수 있다.

import numpy as np

a = np.random.randint(2, size=5)
print(a)

b = np.random.randint(2, 4, size=5)
print(b)

c = np.random.randint(1, 5, size=(2, 3))
print(c)
[0 0 0 0 0]

[3 3 2 2 3]

[[3 2 4]
 [2 2 2]]

 

randn()

표준정규분포로부터 샘플링된 array를 반환한다. rand와 마찬가지로 shape을 지정할 수 있다.

import numpy as np

a = np.random.randn(5)
print(a)

b = np.random.randn(2, 3)
print(b)

sigma, mu = 1.5, 2.0

c = sigma * np.random.randn(5) + mu
print(c)
[ 0.06704336 -0.48813686  0.4275107  -0.9015714  -1.30597604]

[[ 0.87354043  0.03783873  0.77153503]
 [-0.35765934  2.11477207  1.28474164]]

[0.47894537 1.2894864  2.51428183 1.55888021 0.08079876]

표준정규분포 N(1, 0)이 아닌 평균 $\mu$, 표준편차 $\sigma$를 갖는 정규분포의 array를 생성하기 위해서는 위의 예시 c 처럼 사용하면 된다.

 

standard_normal()

randn과 마찬가지로 표준정규분포로 부터 샘플링하지만 튜플을 인자로 받는다는 차이가 있다.

import numpy as np

d = np.random.standard_normal(3)
print(d)

e = np.random.standard_normal((2, 3))
print(e)
[ 0.72496842 -1.94269564 -0.39983457]

[[-0.36962525  0.61226929  1.91266759]
 [ 0.2095275  -0.66655062  0.74094405]]

 

normal()

정규분포로부터 샘플링한다.

import numpy as np

a = np.random.normal(0, 1, 2)
print(a)

b = np.random.normal(1.5, 1.5, 4)
print(b)

c = np.random.normal(3.0, 2.0, (2, 3))
print(c)
[-0.66144234  2.52980783]
[2.96297363 1.71391993 1.61165712 3.57817189]
[[3.28846179 5.14251661 4.31800249]
[4.79395804 1.59956438 4.46791867]]

a는 정규분포 $N(0, 1)$로부터 얻은 임의의 숫자 2개

b는 정규분포 $N(1.5, {1.5}^2)$로부터 얻은 임의의 숫자 4개

b는 정규분포 $N(3, 2^2)$로부터 얻은 (2, 3) 형상의 array이다.

 

random_sample()

[0.0, 1.0) 범위에서 샘플링된 임의의 실수를 반환한다.

import numpy as np

a = np.random.random_sample()
print(a)

b = np.random.random_sample((5, 2))
print(b)

c = 5 * np.random.random_sample((3, 2)) - 3
print(c)
0.9662064052518934

[[0.21827699 0.39935976]
 [0.4444503  0.53683571]
 [0.63821048 0.89894424]
 [0.07794204 0.80244891]
 [0.36607828 0.15745157]]

[[ 1.17525258  0.58536383]
 [ 1.44294647 -2.39544082]
  [-0.48931127  1.84401433]]

 

choice

np.random.choice(a, size, replace, p)

  • a : 1-d array나 int로 지정할 수 있으며, array로 지정시 해당 array의 element로 부터 샘플링을 한다. int로 지정시 [0, int)범위에서 정수값을 샘플링한다.
  • size : shape을 지정할 수 있다.
  • replace : 복원 추출 여부로 True 지정시 중복 추출이 가능하다.
  • p : 확률 리스트로써 해당 확률을 반영하여 샘플링한다. len(p) == a 이어야함

 

'Python > numpy' 카테고리의 다른 글

nonzero  (0) 2023.09.23
info  (0) 2023.09.23
size, itemsize  (0) 2023.09.23
zeros  (0) 2023.09.23