[Python] 예제로 알아보는 파이썬 넘파이(numpy) 랜덤(난수) 배열 생성: numpy.random
numpy.random.rand()함수 또는 numpy.random.random()함수 또는 numpy.random.randint()함수를 사용하여 임의값으로 배열을 생성합니다. random()함수는 0에서 1사이의 난수(Random Number)를 발생시키는 함수입니다. 넘파이(numpy) 모듈을 import 후 1차원 배열부터 3차원 배열까지 하나씩 살펴봅니다. 배열에 값을 추가는 numpy.append()함수를 사용합니다. numpy.insert()함수를 사용하면 지정한 index 값 위치에 배열의 값(요소)를 추가할 수 있습니다.
1. 임의값으로 1차원 배열만들기(One-Dimensional Numpy Array)
import numpy as np
#10개의 요소를 가지는 1차원 배열 생성
a = np.random.rand(10)
print(f'a 자료형 : {type(a)}')
print(a)
print(f'배열의 첫번째 요소 출력: {a[0]}')
#실행결과
a 자료형 : <class 'numpy.ndarray'>
[0.19074194 0.30489134 0.511642 0.80124502 0.22755709 0.717761
0.41656191 0.83260157 0.5747184 0.68565771]
배열의 첫번째 요소 출력: 0.19074193591221522
random()함수 사용 예제
import numpy as np
a = np.random.random(3)
print(a)
print(f'몇 차원 배열인가요? {a.ndim}')
#실행결과
[0.23987726 0.51402057 0.16949199]
몇 차원 배열인가요? 1
randint()함수 사용 예제 : 정수값으로 1차원 배열을 생성합니다.
import numpy as np
a = np.random.randint(low=-3, high=5, size=4)
print(a)
print(f'몇 차원 배열인가요? {a.ndim}')
#실행결과
[ 2 3 -3 4]
몇 차원 배열인가요? 1
uniform() 함수 사용 예제 : 실수값으로 1차원 배열을 생성합니다.
import numpy as np
a = np.random.uniform(low=-3, high=5, size=4)
print(a)
print(f'몇 차원 배열인가요? {a.ndim}')
#실행결과
[ 1.62021127 2.75999926 2.12948248 -1.01658252]
몇 차원 배열인가요? 1
choice()함수 사용 예제 : 리스트나 튜플에서 랜덤으로 1차원 배열을 생성합니다. replace를 True로 할 경우 중복된 값이 존재하는 배열이 생성됩니다.
import numpy as np
#튜플 자료형
x = (1,2,3,4,5,6,7)
a = np.random.choice(x, size=4)
print(a)
print(f'몇 차원 배열인가요? {a.ndim}')
#리스트 자료형
x = ['a', 'b', 'c', 'd']
a = np.random.choice(x, size=4, replace=True)
print(a)
print(f'몇 차원 배열인가요? {a.ndim}')
a = np.random.choice(x, size=4, replace=False)
print(a)
#실행결과
[7 5 7 2]
몇 차원 배열인가요? 1
['b' 'c' 'a' 'a']
몇 차원 배열인가요? 1
['a' 'b' 'c' 'd']
1차원 배열에 값을 추가하는 방법은 append()함수를 사용합니다.
import numpy as np
a = np.array([])
a = np.append(a, ([1, 2, 3]))
print(f'a 자료형 : {type(a)}')
print(a)
a = np.append(a, 100)
print(a)
#실행결과
a 자료형 : <class 'numpy.ndarray'>
[1. 2. 3.]
[ 1. 2. 3. 100.]
numpy.insert()함수를 사용하면 지정한 위치에 배열의 값을 추가할 수 있습니다.
import numpy as np
a = np.array([])
a = np.append(a, ([1, 2, 3]))
print(a)
a = np.insert(a, 2, 9)
print(a)
a = np.insert(a, 4, 222)
print(a)
#실행결과
[1. 2. 3.]
[1. 2. 9. 3.]
[ 1. 2. 9. 3. 222.]
2. 임의값으로 2차원 배열만들기(Two-Dimensional Numpy Array)
1차원 배열 요소를 10개로 하는 배열을 5개를 2차원 배열을 생성하는 예제입니다.
import numpy as np
a = np.random.rand(5, 10)
print(f'a 자료형 : {type(a)}')
print(a)
print(f'배열의 첫번째 요소 출력: {a[0]}')
#실행결과
a 자료형 : <class 'numpy.ndarray'>
[[0.09613523 0.82101044 0.71152492 0.93694439 0.95959154 0.22874139
0.38691506 0.87668109 0.16295808 0.03828653]
[0.5801027 0.59002705 0.88228824 0.1395758 0.81495602 0.91205141
0.97495327 0.98038882 0.93832362 0.05532124]
[0.94606427 0.56655496 0.07934456 0.94005217 0.18427347 0.08633295
0.83019742 0.7791992 0.9520857 0.70449661]
[0.9753852 0.26567212 0.55131295 0.61604663 0.90759448 0.52261362
0.91263188 0.85189315 0.33530401 0.05557624]
[0.08175786 0.04600226 0.23768383 0.89578448 0.88543144 0.33675447
0.79754086 0.03671037 0.9384324 0.06313962]]
배열의 첫번째 요소 출력: [0.09613523 0.82101044 0.71152492 0.93694439 0.95959154 0.22874139
0.38691506 0.87668109 0.16295808 0.03828653]
import numpy as np
a = np.random.random((3, 3))
print("n", a)
print(f'몇 차원 배열인가요? {a.ndim}')
#실행결과
[[0.6923515 0.19818421 0.67891441]
[0.42500059 0.98094815 0.83111454]
[0.88412123 0.37223367 0.16472305]]
몇 차원 배열인가요? 2
1차원 배열 요소를 2개로 하는 1차원 배열 20개를 2차원 배열을 생성하는 예제입니다.
import numpy as np
a = np.random.rand(20, 2)
print(f'a 자료형 : {type(a)}')
print(a)
print(f'배열의 첫번째 요소 출력: {a[0]}')
#실행결과
a 자료형 : <class 'numpy.ndarray'>
[[0.9869463 0.82185066]
[0.39407498 0.40221407]
[0.48750881 0.07468417]
[0.35227835 0.80837061]
[0.5911969 0.22883308]
[0.62446106 0.89431218]
[0.16899408 0.67364827]
[0.58243452 0.04657651]
[0.23392498 0.34497214]
[0.5968622 0.29060355]
[0.73694281 0.16478233]
[0.104584 0.04599219]
[0.1248775 0.49764989]
[0.02004002 0.35845644]
[0.17423559 0.09781549]
[0.97431098 0.72766742]
[0.59412488 0.07414018]
[0.36517119 0.44761109]
[0.76478319 0.72350147]
[0.55901052 0.2524643 ]]
배열의 첫번째 요소 출력: [0.9869463 0.82185066]
2차원 배열에 배열을 추가하는 방법은 append()함수를 사용합니다. 반드시 axis=0를 인자로 적용해야합니다. 그렇지않으면 1차원 배열로 추가 됩니다.
import numpy as np
a = np.empty((0, 3), int)
a = np.append(a, np.array([[1, 2, 3]]))
a = np.append(a, np.array([[4, 5, 6]]))
print(f'a 자료형 : {type(a)}')
print(a)
#실행결과
a 자료형 : <class 'numpy.ndarray'>
[1 2 3 4 5 6]
import numpy as np
a = np.empty((0, 3), int)
a = np.append(a, np.array([[1, 2, 3]]), axis=0)
a = np.append(a, np.array([[4, 5, 6]]), axis=0)
print(f'a 자료형 : {type(a)}')
print(a)
#슬라이스 예제
print(a[1, :3])
print(a[1, 2])
#실행결과
a 자료형 : <class 'numpy.ndarray'>
[[1 2 3]
[4 5 6]]
[4 5 6]
6
3. 임의값으로 3차원 배열만들기(Three-Dimensional Numpy Array)
다음 예제는 1차원 배열의 요소를 3개로 하는 2차원 배열을 2개 만든 후, 4개의 3차원 배열을 생성하는 예제입니다.
import numpy as np
a = np.random.rand(4, 2, 3)
print(f'a 자료형 : {type(a)}')
print(a)
print(f'배열의 요소 출력: {a[0][0][1]}')
#실행결과
a 자료형 : <class 'numpy.ndarray'>
[[[0.18098274 0.409441 0.16363375]
[0.02386171 0.43326769 0.12566958]]
[[0.91005793 0.17863572 0.44753449]
[0.00479473 0.67338153 0.22023365]]
[[0.38902852 0.46473956 0.10385789]
[0.55291882 0.9759436 0.55195384]]
[[0.71836235 0.19553842 0.97013576]
[0.59063731 0.03312521 0.56774201]]]
배열의 요소 출력: 0.40944099540084833
[REFERENCE]
[파이썬 더 알아보기]
[Python] 파이썬 넘파이(Numpy) 기초 및 사용 방법 예제 총정리