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 ]])
표준 정규 분포에서 추출
평균 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 ]])
정수에서 임의 추출, (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]])
원하는 조건 안에서 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')
출력값을 고정
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]])
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]])