AI 공부 도전기

numpy.random 대표 함수 살펴보기 (rand, randn, randint, random etc)



https://docs.scipy.org/doc/numpy-1.15.0/reference/routines.random.html


위 이미지는 scipy에서 numpy 1.15 version으로 numpy.random 함수를 정리해놓은 공식 사이트 URL입니다. 

오늘 살펴볼 함수는 간단한 random 함수에 대해서 살펴볼 것입니다.

생각보다 많이 쉬워서 대표적인 것들만을 살펴볼 것입니다.

1. numpy.random.rand


np.random.rand 함수는 0~1 사이의 값의 uniform distribution 균일 분포, 균등 분포라고 불리는 값을 return 하는 함수입니다.


hyperparameter로 정수 혹은 tuple 형태의 array의 dimension 혹은 shape을 적는 부분으로 optional 즉 굳이 적지 않아도 하나의 값을 리턴하는 것을 확인할 수 있습니다.

쉽죠? 다른 것들도 다 마찬가지입니다.


2. numpy.random.randn


np.random.randn 함수는 Normal(Gaussian) Distribution 정규 분포, 가우시안 분포라고 불리는 값을 return 하는 함수입니다. 대체로 -1~1사이의 값을 얻습니다.


이 역시 hyperparameter로 정수 혹은 tuple 형태의 array의 dimension 혹은 shape을 적는 부분으로 optional 즉 굳이 적지 않아도 하나의 값을 리턴하는 것을 확인할 수 있습니다.

3. numpy.random.randint


np.random.randint 함수는 정수 값만을 return 하는 함수입니다. 


여기서부터 hyperparameter는 의무적으로 하나 이상을 적어야합니다.

더 자세히 살펴보면 다음과 같습니다.


1) low 

가장 작은 범주가 어디서부터 시작하는 지를 적습니다. 다만 1개의 hyperparameter를 적으면 그 값은 가장 높은 범주의 값으로 인식하고 0에서부터 그 숫자 사이의 int를 1개 반환합니다.

만약 high없이 개수를 늘리고 싶다면 다음과 같이 적으면 됩니다.

ex) numpy.random.randint(3, size=10)


2) high

가장 높은 정수를 적은 곳으로 선택사항 optional입니다.


3) size

몇 개의 random 값을 리턴하기 바라는지를 적으면 됩니다. 3개 반환을 받고 싶다면 3개를 적으면 됩니다. 만약 array 형태로 shape을 적고싶다면 다음과 같이 적을 수도 있습니다.

ex) numpy.random.randint(3,10,size=(3,2))

이렇게 적으면 3~10 사이의 정수를 3x2 행렬에 맞게 반환해주세요 라는 뜻이 됩니다.


4) dtype

int를 반환하는 함수이기 때문에 굳이 필요한가 싶지만 이 부분은 int 혹은 int64를 반환할 수 있도록 선택하는 parameter입니다. 때문에 굳이 선택하지 않으셔도 됩니다.

4. numpy.random.random

이 부분은 앞에서 1.numpy.random.rand와 비슷한 형태입니다. 다만 다른 점은 1에서 설명한 것은 0~1 사이이지만 여기서는 0~1보다 작은 값의 범주라는 것입니다.

이 부분은 random_sample, randf, sample의 함수와 동일합니다.


hyperparameter로는 이 역시 선택으로 size를 적으면 됩니다.

적지 않아도 1개의 값을 return하고 tuple로 나타낸 array size를 적어도 그 개수만큼 return 함을 알 수 있습니다.




여기까지가 기초적인 random 함수의 종류에 대해서 살펴보았습니다. 사실 가장 많이 사용하는 것은 uniform distribution을 따르는 numpy.random.rand과 normal distribution을 따르는 numpy.random.randn 이 2개가 가장 많이 사용되고 그 다음으로 많이 사용되는 것은 numpy.random.randint입니다.

이 3개를 가장 많이 사용하는 만큼 꼭 기억하시면 편할 것 같네요.


여기까지 읽어주셔서 감사합니다.


공유하기

facebook twitter kakaoTalk kakaostory naver band
loading