Python

파이썬 numpy 기본 (numpy tutorial in python)

슈퍼짱짱 2019. 9. 9. 08:00
반응형

파이썬 NumPy 기본 tutorial


1. numpy import


넘파이는 외부 라이브러리이기 때문에 import한다.


1
import numpy as np
cs

* as np로 선언해 주었기 때문에 후에 사용할때 numpy.~ 이 아니라 np.~ 로 좀 더 짧게 쓸 수 있다.



2. numpy array 생성

넘파이로 배열을 생성 할 때는 np.array() 로 한다.

1
= np.array([1,2,3,4,5])
cs


>>> print(x)

[1,2,3,4,5]


>>> type(x)

<class 'numpy.ndarray'>




3. N차원 array 생성


넘파이는 1차원 이상의 배열도 생성할 수 있다.

예를들어, 3X2 배열은 다음과 같이 생성한다.


1
= np.array([[51,55],[14,19],[0,4]])
cs


>>> print(x)

[[51 55]

 [14 19]

 [ 0  4]]


>>> x.shape

(3, 2)


>>> x.dtype

dtype('int32')




4. 1차원 배열 연산


1
2
3
4
5
6
7
= np.array([1,2,3,4,5])
= np.array([6,7,8,9,10])
 
x+y
x-y
x*y
x/y
cs


>>> x + y

array([ 7,  9, 11, 13, 15])


>>> x - y

array([-5, -5, -5, -5, -5])


>>> x * y

array([ 6, 14, 24, 36, 50])


>>> x / y

array([0.16666667, 0.28571429, 0.375     , 0.44444444, 0.5       ])




5. N차원 배열 연산


1
2
3
4
5
6
= np.array([[1,2],[3,4]])
= np.array([[3,0],[0,6]])
 
+ y
- y
* y
cs


>>> x + y

array([[ 4,  2],

       [ 3, 10]])


>>> x * y

array([[ 3,  0],

       [ 0, 24]])




6. 브로드캐스트(broadcast)


* 배열 x와 y의 원소 수가 같을 때는 같은 위치에 있는 원소별로 연산이 이루어진다. 원소의 수가 다를 때는 일반적으로 에러가 난다. 

단, 둘 중 한 배열의 길이가 1일 때는 에러없이 성공적으로 연산된다. 이를 브로드캐스트라 한다.


1
2
3
4
5
6
= np.array([1,2,3,4])
= np.array([6])
 
+ y
* y

cs


>>> x + y

array([ 7,  8,  9, 10])


>>> x * y

array([ 6, 12, 18, 24])




1
2
3
4
5
= np.array([[1,2],[3,4]])
= np.array([3])
 
+ y
* y
cs



>>> x + y

array([[4, 5],

       [6, 7]])


>>> x * y

array([[ 3,  6],

       [ 9, 12]])




1
2
3
4
5
= np.array([[1,2],[3,4]])
= np.array([3,0])
 
+ y
* y
cs


>>> x + y

array([[4, 2],

       [6, 4]])


>>> x * y

array([[3, 0],

       [9, 0]])




7. 인덱싱

array의 index는 0부터 시작한다.


1
2
= np.array([[51,55],[14,19],[0,4]])
 
cs


>>> print(x)

[[51 55]

 [14 19]

 [ 0  4]]


7.1 첫 번째 원소 indexing


>>> x[0][0]

51


>>> x[0,0]

51


7.2 첫 번째 행 indexing


>>> x[0]

array([51, 55])


>>> x[0,:]

array([51, 55])


7.3 첫 번째 열 indexing


>>> x[:,0]

array([51, 14,  0])




8. 배열 shape 바꾸기


array.reshape() 매소드를 통해 3X2의 배열을 2X3으로, 1X6, 6X1 로 바꿀 수 있다.


1
2
3
4
= np.array([[51,55],[14,19],[0,4]])
 
x.reshape(2,3)
x.reshape(1,6)
cs


>>> x.reshape(2,3)

array([[51, 55, 14],

       [19,  0,  4]])


>>> x.reshape(1,6)

array([[51, 55, 14, 19,  0,  4]])


이때, array.flatten() 매소드를 통해 N차원 배열을 1차원으로 바꿀 수 있다.


>>> x.flatten()

array([51, 55, 14, 19,  0,  4])


반응형