2. numpy – random

numpy의 랜덤함수 서브모듈 기능알아 보자

서브모듈 기능란.


랜덤 함수의 하위 함수인 함수. 탭키를 누르면 이렇게 됩니다. 종류가 많으니 우리가 자주 사용하는 것들만 살펴보자

1. np.random.rand() – 0과 1 사이의 샘플

– 0과 1 사이의 균일한 분포로 임의의 ndarray를 생성합니다.

# <in>
np.random.rand(2, 3)


# <out>
array(((0.86430509, 0.18265898, 0.46934252),
       (0.22979993, 0.89849182, 0.30967946)))

출력은 실행될 때마다 다른 값입니다.

2. np.random.edgeN() – 정규 분포에서 샘플링

– n: 정규분포

정규 분포~처럼 견본 추출완전한 무작위 ndarray생성

# <in>
x = np.random.randn(5)
y = np.random.randn(2, 2)
z = np.random.randn(3, 4, 2)

print(x)
print(y)
print(z)


# <out>
(-0.58401638  1.37962863 -0.64165833 -0.42724694  0.74106773)
(( 0.94302591 -0.05329357)
 (-0.52797546  1.05197714))
((( 0.34171814 -0.31797128)
  ( 0.28743215 -1.05153548)
  (-0.48148663 -1.05079033)
  ( 1.46262637 -0.63480789))

 ((-0.20628469 -1.40535006)
  (-0.92046105 -1.40223408)
  (-0.68383868 -0.78724848)
  (-2.23402328  0.08321203))

 ((-2.07210093  1.2044467 )
  (-0.20293513 -0.58608335)
  ( 0.09561407  0.56547173)
  ( 1.39963372 -0.14091536)))

정규분포에서 추출한 표본이기 때문에 음의 값이 있음을 확인할 수 있다.

실수 대신 정수에서 샘플을 추출하려고 할 때 사용하는 함수를 살펴보겠습니다.

3. np.random.randint() – 정수만 무작위로 샘플링

np.random.randint(1, 100, size =(5, 5))
# 1과 99사이의 정수를 5 x 5 배열로 랜덤 추출

함수의 수가 방대하기 때문에 함수에 적용된 매개변수가 기억나지 않으면 Shift + Tab을 눌러 검사할 수 있습니다.

4. np.random.seed() 함수 – 사용된 임의의 값을 기억하고 싶은 경우

실험 중에 결과를 확인하고 결과를 생성한 샘플을 검토해야 하는 상황이 있습니다. 정수라면 단순한 배열이라면 기억할 수 있지만 실수라면 까다로울 수 있습니다. 이때 사용하는 함수가 seed 함수입니다.

# <in>
np.random.seed(28)
np.random.rand(2,2)


# <out>
array(((0.72901374, 0.5612396 ),
       (0.12496709, 0.39759237)))

시드가 28이고 random.rand가 시드 28의 무작위 샘플인 경우

array(((0.72901374, 0.5612396 ),
       (0.12496709, 0.39759237)))

결과로만 나옵니다.

지금은 어떻게 쓰나 실감이 안 나지만 쓰게 될 날은 꼭 오겠죠.

5. np.random.choice() – 주어진 것 중에서 무작위 선택

주어진 1D 배열의 무작위 샘플.

정수가 지정되면 np.arange(integer)로 처리됩니다.

np.random.choice(100, size=(2,2))

np.arange(100)에서 2 x 2 배열을 무작위화합니다.

x = np.array((1, 2, 3, 1.5, 2.6, 4.9))

np.random.choice(x, size = (2, 2))

2×2 2D 배열은 x라는 1D ndarray에서 무작위로 추출됩니다.

6. np.random.uniform(), normal() 등…

다양한 확률 분포에 따라 ndarray를 생성할 수 있습니다.

np.random.uniform(1, 3, size = (2, 2))

np.random.normal(size = (2, 2))