python#3 np.random 정리하기

Clay Ryu's sound lab·2022년 3월 6일
0

Framework

목록 보기
7/48

rand, random

0~1 사이의 실수 값들을 균일한 분포에서 추출
rand와 random의 차이는 size를 넣어주는 방식에서만 다를뿐 나머지는 다 같다.

np.random.rand()
# 0.7674035481351261

np.random.rand(10)
# array([0.72669913, 0.62648106, 0.71940744, 0.96787525, 0.09022593,
#       0.25628686, 0.45150901, 0.57019376, 0.0378298 , 0.59066477])
       
np.random.rand(2,2)
# array([[0.153756  , 0.43566163],
#       [0.46195671, 0.31775735]])

np.random.random()
# 0.8004573977646751

np.random.random(10)
# array([0.81071423, 0.52045026, 0.63447331, 0.2077811 , 0.61621522,
#       0.65873146, 0.40066387, 0.39357379, 0.73188604, 0.96152765])

np.random.random((2,2))
# array([[0.08452822, 0.71701623],
#       [0.41648016, 0.1424433 ]])

randn

표준 정규 분포에서 추출
평균 0, 표준편차 1을 가지는 표준 정규분포이다.

np.random.randn()
# -0.44052620473822973

np.random.randn(10)
# array([-1.08855497,  0.12228562, -1.14115112,  1.47225313, -0.35378245,
#       -0.76400337,  1.98467741, -1.21274421,  0.52098465, -0.85828159])

np.random.randn(2,3)
# array([[-0.70988889, -1.8359224 ,  0.14227934],
#       [ 1.48899183, -0.53777263,  0.8487644 ]])
       

randint

정수에서 임의 추출, (low, high, size)로 인자가 구성됨

np.random.randint(1, 11, size=20)
# array([ 4,  1,  8,  9,  9,  7, 10,  8,  2,  3,  3,  5,  7,  7,  1,  4,  8,
#        3,  5,  6])
 
np.random.randint(1, 11, size=(2,3))
#array([[ 6,  3, 10],
#       [ 2,  2,  9]])

np.random.choice

원하는 조건 안에서 sampling
np.random.choice(a, size=None, replace=True, p=None)
np.random.choice(집단, 개수, 복원추출여부, 확률리스트)
집단 : 정수로 지정시 0 ~ 해당숫자 -1
개수 : sampling 할 개수
복원추출여부 : True는 뽑았던 것이 또 뽑힘
확률리스트 : 집단의 확률 지정가능

np.random.choice(10, (2,4))
# array([[1, 5, 8, 1],
#       [5, 0, 8, 3]])

np.random.choice(['cat', 'dog', 'flower', 'human'], (2,4), p = [0.5, 0.4, 0.05, 0.05])
# array([['dog', 'flower', 'cat', 'dog'],
#       ['dog', 'cat', 'dog', 'dog']], dtype='<U6')

seed

출력값을 고정

normal

normal distribution을 생성한다. 평균과 표준편차, size를 파라미터로 가진다.

mu, sigma = 0, 0.1 # mean and standard deviation
s = np.random.normal(mu, sigma, 1000)

np.random.normal(3, 2.5, size=(2, 4))
# array([[-4.49401501,  4.00950034, -1.81814867,  7.29718677],
#        [ 0.39924804,  4.68456316,  4.99394529,  4.84057254]])

흥미로운 점은 loc와 scale을 행에 맞춰서 넣어줄 수 있다는 것이다.
loc가 4개면 열이 4개이고 평균이 각각의 값이 맞는 행렬이 나온다.

np.random.normal(loc=(1,1,1,4), size=(2,4))
# array([[1.0201759 , 1.44426664, 1.55710306, 4.00732315],
#        [1.48322616, 0.59947724, 0.97540647, 4.41249299]])

uniform

np.random.uniform(-8, -4, size=(2,4))
# array([[-7.01801543, -5.56576022, -4.75418664, -4.78097807],
#        [-5.29549636, -7.24854196, -6.41527286, -6.62377311]])
profile
chords & code // harmony with structure

0개의 댓글