-
[NumPy] np.random.rand(), RandomState(), randn(), randint(), random(), normal()정리Machine Learning/numpy & pandas & maplotlib 2023. 8. 4. 23:13
1. np.random.rand()
[0,1) 사이의 (uniform distribution)값을 램덤하게 반환
import numpy as np np.random.rand() # 하나의 값 생성 np.random.rand(4) # 4행의 랜덤 값 생성 np.random.rand(5,2) # 5행 2열의 랜덤 값 생성 ------------------------- 0.5026802324958345 array([0.58979257, 0.72740942, 0.58333496, 0.74748877]) array([[0.9106447 , 0.68091985], [0.29337807, 0.01162554], [0.18417443, 0.40650219], [0.52841246, 0.78908411], [0.50498102, 0.29011597]])
2. np.random.randn()
Normal(Gaussian) Distribution 정규 분포 값인, -1 ~ 1 사이의 값을 반환한다.
import numpy as np np.random.randn() -0.11354050578483665
np.random.randn(4) array([ 1.68916447, 1.48477952, 0.60914726, -0.53348381])
np.random.randn(3,2) array([[ 0.89765851, 1.67353568], [ 0.40781373, -0.18054578], [-0.96541126, -0.06754036]])
3. np.random.randint(low, high=None, size=None, dtype='int')
정수값만을 반환.
hyperparameter는 의무적으로 하나 이상 적어야 함. (설명 더보기↓)
더보기lowint or array-like of ints
Lowest (signed) integers to be drawn from the distribution
(unless high=None, in which case this parameter is one above the highest such integer).
highint or array-like of ints, optional
If provided, one above the largest (signed) integer to be drawn from the distribution
(see above for behavior if high=None). If array-like, must contain integer values
sizeint or tuple of ints, optional
Output shape. If the given shape is, e.g., (m, n, k), then m * n * k samples are drawn.
Default is None, in which case a single value is returned.
dtypedtype, optional
Desired dtype of the result. Byteorder must be native. The default value is int.
import numpy as np np.random.randint(3) # low=3 같다. 2
np.random.randint(low=3, high=10) 6
np.random.randint(low=3, high=10, size=10) array([4, 7, 6, 5, 4, 7, 9, 7, 4, 3])
np.random.randint(low=3, high=10, size=10, dtype='int64') array([9, 6, 8, 6, 5, 4, 3, 3, 3, 3])
4. np.random.random()
rand()와 비슷하다. 단지 전달받는 인자의 타입이 다르다. rand()는 int 타입을, random()은 튜플 타입을 전달 받는다. 튜플로 받는 이유는 편의성을 위함이다. shape 속성을 통해 반환된 튜플을 다시 random()함수의 인자로 받는 식으로 코드를 짜기 좋다.
import numpy as np np.random.random() 0.6165552658063878
np.random.random((3)) # np.random.random(size=3)와 완전히 같다. array([0.12728216, 0.35314576, 0.80369635])
np.random.random((3,2)) array([[0.63128459, 0.57794836], [0.83890592, 0.23914906], [0.84420701, 0.41824736]])
5. np.random.RandomState()
- 시드값을 고정시킨 난수생성기 object를 새로 생성함.
- seed를 고정하는 이유는 재생산성(reproducibility)를 확인하기 위함이다.(seed를 고정시키면 같은 값이 순서대로 나오기 때문.)
a=np.random.RandomState(seed=3) a.random(size=2) array([0.5507979 , 0.70814782])
- 아래와 같은 방식은 numpy에 존재하는 random generator에 직접 접근하여, 난수를 생성한다. global한 seed 값을 변경하기 때문에 개별적으로 seed 값을 세팅할 수 없다.
- RandomState는 local한 seed값을 세팅한 객체를 생성하기 때문에 localization 측면에서 유용하다.
np.random.seed(seed=3) np.random.random(size=2) array([0.5507979 , 0.70814782])
5. np.random.normal(loc, scale, size)
정규분포로부터 난수를 생성한다.
더보기- loc (locus): 이는 정규 분포의 평균(mean)을 지정하는 인자입니다. 평균은 분포의 중심 값을 의미하며, 기본값은 0입니다.
- scale: 이는 정규 분포의 표준편차(standard deviation)를 지정하는 인자입니다. 표준편차는 분포의 데이터가 평균 주위로 얼마나 퍼져있는지를 나타냅니다. 기본값은 1입니다.
- size: 이는 생성하고자 하는 난수의 개수를 지정하는 인자입니다. size 인자에는 정수 값을 전달하며, 지정된 개수만큼의 난수를 배열로 반환합니다. 기본값은 None으로, 단일한 난수를 생성합니다.
* 참고
https://rfriend.tistory.com/284
https://frhyme.github.io/python-libs/np_random_randomstate/
https://numpy.org/doc/stable/reference/random/legacy.html#numpy.random.RandomState
'Machine Learning > numpy & pandas & maplotlib' 카테고리의 다른 글
[NumPy] np.pad에 대한 이해 (0) 2023.10.03 [numpy] axis, rank 이해. (n,)와(n,1)의 차이. keepdims (0) 2023.09.05 [Pandas#1] Pandas 기초 (0) 2023.08.05 [NumPy] np.where() (0) 2023.08.04 [NumPy#1] 넘파이란? dtype, astype(), itemsize, size, shape (0) 2023.08.04