본문 바로가기

정보/프로그래밍

[Numpy] 배열 생성 문법 및 사용법 정리

오늘은 행렬이나 다차원 배열의 연산을 쉽게 할 수 있도록 돕는 NumPy 모듈의 기본 문법과 사용법에 대해 정리해보도록 하겠습니다.

 

NumPy 배열 연산의 특징으로는 적은 메모리를 사용하고 빠른 처리를 한다는 것이 있습니다.

 

NumPy 배열의 장점은 기존의 리스트를 이용한 계산과는 다르게 for문을 사용하지 않고 간단하게 연산한다는 것입니다.

 

예를 들어 NumPy 배열의 모든 수에 1을 더하고 싶다면 단순히 NumPy 배열 + 1 을 코드로 작성하면 됩니다.

(for문을 이용하여 하나하나 1을 더하고 다시 리스트에 저장하는 방식보다는 훨씬 빠르고 간단하죠?)

 

지금부터 NumPy 모듈의 기본 문법에 대해 알아보겠습니다.

 

 

초기화할 값 지정하여 배열 생성


import numpy as np

a = np.array([1, 2, 3])
print(a)
## [1 2 3]

b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
## [[1 2 3]
##  [4 5 6]]

일단 numpy 모듈을 import 해주고 보통 줄여서 np로 씁니다.

 

기본적으로 numpy 배열을 생성하기 위해서 array 함수를 사용하고 안에 리스트 형식의 값을 넣어줍니다.

 

다차원 배열을 만들 경우 리스트 인 리스트 형식의 값을 넣어줍니다.

 

 

값을 0으로 초기화하여 배열 생성


print(np.zeros(5))
## [0. 0. 0. 0. 0.]

print(np.zeros((3, 5)))
## [[0. 0. 0. 0. 0.]
##  [0. 0. 0. 0. 0.]
##  [0. 0. 0. 0. 0.]]

zeros 함수를 사용하여 0으로 가득 채운 배열을 생성할 수 있습니다.

 

zeros 함수 안에 숫자 하나만 쓰면 1차원 배열, 괄호를 두 개 씌운 후 숫자 2개 이상을 쓰면 다차원 배열을 만들 수 있습니다.

 

 

값을 1로 초기화하여 배열 생성


print(np.ones(5))
## [1. 1. 1. 1. 1.]

print(np.ones((3, 5)))
## [[1. 1. 1. 1. 1.]
##  [1. 1. 1. 1. 1.]
##  [1. 1. 1. 1. 1.]]

 ones 함수를 사용하여 1로 가득 채운 배열을 생성할 수 있습니다.

 

마찬가지로 ones 함수 안에 숫자 하나만 쓰면 1차원 배열, 괄호를 두 개 씌운 후 숫자 2개 이상을 쓰면 다차원 배열을 만들 수 있습니다.

 

 

수의 순차적인 증감을 이용하여 배열 생성


print(np.arange(10))
## [0 1 2 3 4 5 6 7 8 9]

print(np.arange(10, 20))
## [10 11 12 13 14 15 16 17 18 19]

print(np.arange(10, 20, 2))
## [10 12 14 16 18]

arange 함수 안에 숫자 한 개를 넣으면 0부터 그 숫자까지의 범위를 배열에 저장합니다.

 

arange 함수 안에 숫자 두 개를 넣으면 앞의 숫자부터 뒤의 숫자까지의 범위를 배열에 저장합니다.

 

arange 함수 안에 숫자 세 개를 넣으면 첫 번째 숫자부터 두 번째 숫자까지의 범위를 세 번째 숫자만큼의 크기만큼 띄워서 배열에 저장합니다.

 

 

랜덤한 숫자로 배열 생성


print(np.random.rand(5))
## [0.23655547 0.87462619 0.60253433 0.64984716 0.52243563]

print(np.random.rand(3, 5))
## [[0.93613337 0.76577834 0.06253064 0.64485479 0.00573626]
##  [0.38151601 0.51953911 0.26492211 0.33412351 0.9572828 ]
##  [0.21870647 0.65203969 0.9280186  0.74768458 0.22907186]]

random.rand 함수를 사용하여 0부터 1 사이의 랜덤한 수를 함수 안의 숫자만큼 배열에 저장할 수 있습니다.

 

함수 안에 숫자를 두개 이상 넣으면 다차원 배열을 생성합니다.

 

 

값을 초기화 하지 않고 배열 생성


print(np.empty(5))
## [0.   0.25 0.5  0.75 1.  ]

print(np.empty((3, 5)))
## [[0.00000000e+000 1.06099790e-312 1.01855798e-312 9.54898106e-313
##   1.16709769e-312]
##  [1.01855798e-312 1.23075756e-312 1.18831764e-312 1.06099790e-312
##   9.76118064e-313]
##  [1.14587773e-312 1.12465777e-312 1.06099790e-312 4.44659081e-322
##   0.00000000e+000]]

empty 함수는 초기화를 하지 않은 값을 배열에 저장합니다. 

 

초기화를 하지 않은 값을 저장하기 때문에 배열 생성에 걸리는 시간이 위에 소개한 함수들과 비교해 가장 빠릅니다.

 

하지만, 쓰레기 값이 포함되어 있기 때문에 잘 사용하지는 않습니다.

 

 


오늘은 NumPy 모듈의 기본 문법 중 배열 생성에 필요한 기본적인 함수들을 알아보았습니다.

 

코랩이나 주피터 노트북으로 직접 실행해보시길 바랍니다.

 

https://bigdata-doctrine.tistory.com/27

 

[Python] NumPy 기본 문법 및 사용법 정리 : 주요 연산

오늘은 NumPy의 기본 문법 중 많이 쓰이는 주요 연산 함수에 대해 알아보겠습니다. Numpy 배열의 연산은 리스트 연산과는 다르게 for문을 사용하지 않고 간단하게 연산할 수 있습니다. 예를 들어 NumP

bigdata-doctrine.tistory.com

 

https://bigdata-doctrine.tistory.com/28

 

[Python] NumPy 기본 문법 및 사용법 정리 : 주요 기능

오늘은 이전 시간에 설명드렸던 NumPy 모듈의 기능들 외의 주요한 기능들에 대해 설명해보겠습니다. 배열 변형, 배열 정보 확인, 특정 값 선택, 저장 등 이전 시간에는 다루지 않았지만 중요한 기

bigdata-doctrine.tistory.com