딥러닝을 익히기 위해 익혀야 할 라이브러리인 numpy, panas, matplotlib를 공부 중 입니다.
오늘은 numpy에 대해서 공부해보겠습니다.
Numpy는 C언어로 구현된 파이썬 라이브러리이며, 고성능의 수치계산을 위해 제작되었다. Numerical Python의 줄임말이기도 한 Numpy는 벡터 및 행렬 연산에 있어서 매우 편리한 기능을 제공합니다. 파이썬은 동적언어이기에 처리속도가 정적언어에 비해 떨어질 수 밖에 없기에 정적언어인 C언어를 부분 이용해서 구현이 가능합니다.
numpy 가져오기
numpy를 가져올 때 np로 가져오는 경우가 훨씬 편리합니다. 물론 불편하지않다면 numpy를 그대로 써도 좋습니다.본 글에서는 np로 호출 받은것을 가정하고 글을 쓰겠습니다.
# np로서 호출 받기
>>> import numpy as np
# 그냥 호출받기
>>> import numpy
numpy 배열 만들기
배열은 np.array() 메서드를 이용해서 만들어 줄 수 있습니다.
# 원소가 정수인 경우
>>> np.array([1, 2, 3])
array([1, 2, 3])
# 원소가 실수인 경우
>>> np.array([1.0, 2.0, 3.0])
array([1., 2., 3.])
numpy의 산술연산
배열 간의 원소 별로 연산을 할 수 있게 도와준다. 놀랍게도 배열과 단순한 원소하나의 연산도 가능합니다.
>>> x = np.array([1, 2, 3])
>>> y = np.array([3, 4, 5])
# 배열과 배열 간의 연산
>>> x + y
array([4, 6, 8])
>>> x - y
array([-2, -2, -2])
>>> x * y
array([ 3, 8, 15])
# 배열과 단순한 원소간의 연산
>>> x * 2
array([2, 4, 6])
numpy의 다차원 연산
행렬의 형상은 행렬안에 든 원소의 크기를 나타낸 수의 모음입니다.
배열안에 n개의 배열이 들어있으며 m개의 원소를 갖고있다는 뜻의 (n, m)가 출력됩니다.
# 다차원 배열 선언
>>> arr = np.array([[1, 2], [3, 4]])
>>> print(arr)
[[1 2]
[3 4]]
# 행렬의 형상
>>> arr.shape
(2, 2)
# 만일 3개의 리스트를 갖고 있고 3개의 원소를 갖고 있는 2차원 리스트라면
>>> arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> arr.shape
(3, 3)
# 만일 3개의 리스트를 갖고 있고 2개의 원소를 갖고있는 2차원 리스트라면
>>> arr = np.array([[1, 2], [3, 4], [5, 6]])
>>> arr.shape
(3, 2)
numpy의 브로드캐스트
numpy의 브로드캐스트 기능으로 다른 크기의 배열간의 연산이 가능합니다.
아래 코드와 같이 [10, 20]은 1차원 배열입니다. 2차원 배열인 [[1, 2], [3, 4]] 와 연산이 이루어진다면 [10, 20]은 [[10, 20], [10, 20]]으로 확장이됩니다. 따라서 둘의 연산이 가능해지는겁니다.
# 크기가 다른 배열 간의 연산
>>> arr1 = np.array([[1, 2], [3, 4]])
>>> arr2 = np.array([10, 20])
>>> arr1 * arr2
array([[10, 40],
[30, 80]])
numpy배열 원소 접근
파이썬에서 인덱스 접근 시에 0부터 접근하듯이 똑같이 접근할 수 있습니다.
>>> arr = np.array([[1, 2], [3, 4]])
>>> arr[0]
array([1, 2])
>>> arr[0][1]
2
>>> arr[1][1]
4
'Dev Lang > Python' 카테고리의 다른 글
[Python] 순열(Permutation) 구현 (0) | 2022.08.09 |
---|---|
[Python] 중복되는 데이터를 제거하고 싶을 경우 (0) | 2022.07.18 |
[Python]Collections.Counter와 반올림 처리 (0) | 2022.02.21 |
[Python] enumerate( ) (0) | 2022.02.18 |
[Python] sort( ), sorted( )에 대해서 (0) | 2022.02.15 |