기타/기타 잡다한 것들

[딥러닝기초] 파이썬 넘파이(numpy) 기본 사용법

제주도소년 2018. 10. 27. 00:38

[딥러닝기초] 파이썬 넘파이(numpy) 기본 사용법

어떤 딥러닝 책을 보더라도 배열이나 행렬 계산이 많이 등장한다 .. 넘파이의 배열 클래스인 numpy.array에는 편리한 함수가 많이 준비되어있어서 딥러닝을 구현할 때 많이 이용한다.


1. 넘파이 가져오기

넘파이는 외부 라이브러리이기 때문에 넘파이를 사용할 수 있게 import 해야한다. 여기서 as np 는 numpy의 별칭을 np 로 두겠다는 의미이다. 즉 numpy를 하지않고 넘파이가 제공하는 함수를 np를 통해 참조할 수 있게 된다.
1
import numpy as np
cs


2. 배열 생성하기

넘파이 배열을 만들 때는 np.array() 메서드를 이용한다.
이 함수는 파이썬의 리스트를 인수로 받아서 넘파이가 제공하는 특수한 형태의 배열을 반환한다.
1
2
3
import numpy as np
 
= np.array([12345])
cs


3. 산술 연산

넘파이 배열로 산술 연산을 할수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import numpy as np
 
= np.array([12345])
= np.array([678910])
 
print(x)
print(y)
 
print(x+y)
print(x*y)
print(x-y)
 
[1 2 3 4 5]
6  7  8  9 10]
7  9 11 13 15]
6 14 24 36 50]
[-5 -5 -5 -5 -5]
cs


4. 다차원 배열

위의 예시는 1차원 배열인데 넘파이에서는 다차원 배열도 작성할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as np
 
= np.array([[12345], [678910]])
= np.array([[22222], [44444]])
 
print(x.shape)
 
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]]
[[2 2 2 2 2]
 [4 4 4 4 4]]
 
(25)
cs


shape 함수는 각 배열의 차원의 크기(2, 5즉 2행 5열)를 반환해준다. 물론 print(x) , print(y)는 생략했다.


- 수학에서는 1차원 배열은 벡터(Vector) 2차원배열은 행렬(Matrix)라고 한다. 그리고 벡터와 행렬을 일반화한 것을 텐서(Tensor)라고 한다.


5. 브로드캐스트(broadcast)

넘파이에서는 형사이 다른 배열끼리 계산할 수 있다. 아래와 같은 예를 보면 알 것이다.

x 는 2차원이고 y는 1차원인데 배열 y가 x의 형상으로 변형된 후 원소별 연산이 이루어졌다.


1
2
3
4
5
6
7
8
9
import numpy as np
 
= np.array([[12], [3,4]])
= np.array([2030])
 
print(x*y)
 
[[ 20  60]
 [ 60 120]]
cs