Python

[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]

pythonexamples.org/

 

[파이썬 더 알아보기]

 

[Python] 파이썬 넘파이(Numpy) 기초 및 사용 방법 예제 총정리

 

[Python] 파이썬 넘파이(Numpy) 기초 부터 응용까지 총정리

넘파이(Numpy)의 사용 이유 기본적으로 파이썬은 배열 개념이 없습니다. 그리고 다차원 배열에 대한 내부 함수 지원이 없습니다. numpy는 그런면에서 파이썬에 단비와 같다고 볼 수 있어요. 배열 처

playground.naragara.com

 

Leave a Reply

error: Content is protected !!