[파이썬] numpy.random() 넘파이 랜덤(난수)를 이용한 배열 생성방법
넘파이(numpy) 모듈을 import 하여 1차원 배열부터 3차원 배열까지 예제로 알아봅니다.
파이썬에서 numpy.random.rand()함수, numpy.random.random()함수, numpy.random.randint()함수를 사용하여 랜덤값으로 배열을 생성할 수 있습니다.
random()함수는 0에서 1사이의 난수(Random Number)를 발생시키는 함수입니다.
numpy.insert()함수를 사용하면 지정한 index 값 위치에 배열의 값(요소)를 추가할 수 있습니다.
파이썬 임의값으로 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차원 배열만들기(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차원 배열만들기(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]