Numpy의 random 서브 모듈을 활용해 다양한 ndarray를 만드는 방법을 정리합니다.
random 서브모듈 함수를 통해 ndarray 생성하기
random 서브모듈
random 함수
1
| np.random.random((2,3))
|
array([[0.47703558, 0.80144711, 0.74040119],
[0.31862146, 0.690049 , 0.82771048]])
rand 함수
- 0, 1사이의 분포로 랜덤한 ndarray 생성
1
2
| # 1차원
np.random.rand(2)
|
array([0.4431507 , 0.46957526])
1
2
| # 2행 3열 의 ndarray생성
np.random.rand(2,3)
|
array([[0.70933344, 0.25348086, 0.63018799],
[0.3784231 , 0.84538854, 0.59128912]])
1
| np.random.random((2,3))
|
array([[0.90562321, 0.7034081 , 0.43548124],
[0.31597773, 0.68466077, 0.68904796]])
1
2
| # 5행 3열의 행렬이 4개 생성 ->3차원 ndarray
np.random.rand(4, 5, 3)
|
array([[[0.43037496, 0.45892116, 0.43941642],
[0.30684635, 0.40820547, 0.32082638],
[0.7299209 , 0.44457403, 0.76065168],
[0.71211036, 0.12228115, 0.98060708],
[0.47309384, 0.55434374, 0.21288774]],
[[0.7030427 , 0.24030721, 0.89636842],
[0.72449829, 0.94790877, 0.45735653],
[0.31077326, 0.49873703, 0.65385706],
[0.7214069 , 0.57174121, 0.65875851],
[0.87494319, 0.04364989, 0.37346273]],
[[0.83665403, 0.47537478, 0.24707776],
[0.42113453, 0.68517459, 0.77690977],
[0.31956091, 0.38027256, 0.57287284],
[0.48671635, 0.47045021, 0.89825168],
[0.59415424, 0.37183253, 0.6928423 ]],
[[0.0917947 , 0.24222904, 0.35560574],
[0.76962856, 0.17512692, 0.74138208],
[0.08833711, 0.28558716, 0.45292481],
[0.37076011, 0.14093546, 0.77660625],
[0.21051989, 0.36251472, 0.81577139]]])
randn함수
1
2
| # 1차원 벡터
np.random.randn(5)
|
array([-1.51052048, -0.27519631, -0.8666378 , -1.63978589, -0.8215562 ])
1
2
| # 3행 4열 짜리 정규분포에서 sampling한 값 생성
np.random.randn(3, 4)
|
array([[-0.72880075, -1.51866859, 1.59485183, 0.12828884],
[-0.34870788, -0.94093072, -0.65373912, -0.34454653],
[ 0.34429117, -0.67213369, -0.09330556, -0.19039838]])
1
2
| # 4행 2열짜리 행렬을 3개 -> 3차원
np.random.randn(3, 4, 2)
|
array([[[-1.37911421, 0.39138757],
[ 0.72435775, -0.32727131],
[-1.17817337, 0.70851049],
[ 0.47210005, -0.17513222]],
[[-0.59636136, 0.30423486],
[-0.28650705, 0.20916995],
[ 1.74434258, -2.11632065],
[-0.98421197, -1.38944896]],
[[ 0.24653031, -1.44258126],
[ 0.29318149, -0.2206329 ],
[ 0.93137456, -0.87487388],
[-0.55208743, 0.37306698]]])
randint 함수
1
2
| # 1부터 100사이의 수에서 5행짜리 1차원 벡터를 생성
np.random.randint(1, 100, size=(5,))
|
array([35, 58, 84, 11, 11])
1
2
| # 1부터 100사이의 수에서 5행 3열짜리 2차원 벡터를 생성
np.random.randint(1, 100, size=(5,3))
|
array([[ 5, 39, 71],
[84, 23, 22],
[99, 37, 47],
[ 7, 11, 46],
[42, 26, 44]])
seed 함수
array([[ 0.44477548, -0.37859929, -1.04881793, 1.05633961],
[ 1.23118506, 0.47478283, 1.72586718, -0.01090185],
[ 0.35476691, -1.16995451, 0.15202883, -0.27486997]])
array([[-0.3978982 , -1.01173682, 0.40429942, -1.42901326],
[-0.1511208 , 0.15430208, -0.32847991, -0.64725463],
[-1.69742934, -0.16331764, 0.10646885, 1.03418604]])
동일한 범위지만 호출할때마다 값이 바뀐다.
1
2
| np.random.seed(23) #seed는 임의의 수 사용
np.random.randn(3, 4)
|
array([[ 0.66698806, 0.02581308, -0.77761941, 0.94863382],
[ 0.70167179, -1.05108156, -0.36754812, -1.13745969],
[-1.32214752, 1.77225828, -0.34745899, 0.67014016]])
1
2
| np.random.seed(23)
np.random.randn(3, 4)
|
array([[ 0.66698806, 0.02581308, -0.77761941, 0.94863382],
[ 0.70167179, -1.05108156, -0.36754812, -1.13745969],
[-1.32214752, 1.77225828, -0.34745899, 0.67014016]])
choice
1
2
3
| # 1부터 100사이의 수
# 3행 4열 ndarray생성
np.random.choice(100, size=(3, 4))
|
array([[79, 90, 62, 57],
[19, 33, 59, 39],
[15, 36, 65, 1]])
1
2
3
4
5
| x = np.array([1, 2, 3, 1.5, 2.6, 4.9])
# 주어진 x에서 2행 2열 형태로 ndarray 생성
# replace = True가 default값 -> 중복 추출 허용
np.random.choice(x, size=(2, 2) )
|
array([[2.6, 1.5],
[1.5, 2.6]])
1
2
| # 중복 추출 금지
np.random.choice(x, size=(2, 2), replace=False)
|
array([[2.6, 1. ],
[1.5, 4.9]])
확률분포에 따른 ndarray 생성
1
2
3
| # uniform -> low ~ high 사이의 값을 가져 오는 것
# 4행 5열
np.random.uniform(1.0, 3.0, size=(4, 5))
|
array([[2.74942904, 1.8654592 , 2.75215591, 1.94121243, 1.60485579],
[2.53464481, 1.02068753, 2.35248663, 1.94336175, 2.26833065],
[2.84085397, 1.26336399, 2.67879335, 2.40971945, 2.93578399],
[2.80844986, 1.58561196, 1.29487279, 1.28251 , 2.9085976 ]])
normal
- 지정한 평균, 표준편차의 정규분포를 따르는 값으로만 ndarray생성
1
2
| # 평균 0, 표준 편차 1의 정규 분포를 따르는 3*3 ndarray
np.random.normal(0, 1, (3, 3))
|
array([[-0.49566853, -0.01184144, 0.57898537],
[-0.66227358, 1.33292115, -0.39404436],
[-2.50408469, -1.37373969, 1.13563154]])
댓글남기기