머신러닝

본문 바로가기

사이트 내 전체검색


1. Numpy 소개

페이지 정보

작성자 관리자 댓글 0건 조회 2,003회 작성일 20-01-21 18:31

본문

Numpy는 과학 계산을 위한 라이브러리로 다차원 배열을 처리하는데 필요한 여러 기능을 제공한다.

 

numpy 설치 

pip3 install numpy

 

numpy배열 

numpy에서 배열은 동일한 타입의 값들을 갖는다.
배열의 차원을 rank라고 한다.

shape : 각차원의 크기를 튜플로 표시한 것

예> 2행, 3열 인 2차원은 배열은 rank는 2이고, shape(2,3)

 

실습1.

import numpy as np

list1 = [1,2,3,4]

a = np.array(list1)

print(a)

print(a.shape)

 

[결과]

[1 2 3 4]
(4,)

 

numpy배열을 생성 

> 파이썬의 리스트를 사용하는 방법 

array() 함수의 인자로 리스트를 넣어 생성한다.

numpy.array([1,2,3])

 

 

 

 

실습2.

import numpy as np
b = np.array([[1,2,3],[4,5,6]])
print(b)
print(b.shape)

print(b[0,0])

 

[결과]

[[1 2 3]
 [4 5 6]]
(2, 3)

1​

 

 

> numpy에서 제공하는 함수를 사용하는 방법

 

zeros()함수는 배열에 모두 0을 집어 넣고,
ones()함수는 모두 1을 집어넣는다.,
full()함수는 사용자가 지정한 값을 넣는데 사용,
eye()함수는 대각선으로는 1이고 나머지는 0인 2차원배열을 생성    

range(n) : 0 ~ n-1까지의 숫자를 생성하는 함수
reshape() : 다차원으로 변형하는 함수

 

 

 

실습3.

import numpy as np
aa = np.zeros((2,2))
print(aa)
print(type(aa))

bb = np.ones((2,3))
print(bb)

cc = np.full((2,3), 10)
print(cc)

dd = np.eye((3))
print(dd) 

 

[결과]

[[0. 0.]
 [0. 0.]]
<class 'numpy.ndarray'>
[[1. 1. 1.]
 [1. 1. 1.]]
[[10 10 10]
 [10 10 10]]
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

 

실습4.

import numpy as np
aa = np.array(range(20)).reshape((5,4))
print(aa)

bb = np.array(range(15)).reshape((3,5))
print(bb) 

[결과]

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]]
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]

 

 

numpy 슬라이싱, 인덱싱, 연산

실습5. numpy 슬라이싱

import numpy as np

list=[
  [1,2,3],
  [4,5,6],
  [7,8,9]
]

arr = np.array(list)

a = arr[0:2, 0:2]

print(a)

print("-----------")
b =  arr[1:, 1:]
print(b)

 

[결과]

[[1 2]
 [4 5]]
-----------
[[5 6]
 [8 9]]

 

 

실습6. 정수 인덱싱

import numpy as np

list=[
  [1,2,3,4],
  [5,6,7,8],
  [9,10,11,12] 
]

a = np.array(list)


res = a[[0,2], [1,3]]  # a[0,1], a[2,3] 값을 가져온다.

print(res)

 

[결과]

[ 2 12]

실습7. 부울린 인덱싱(boolean indexing)

import numpy as np
list1=[
  [1,2,3],
  [4,5,6],
  [7,8,9]
]

aa = np.array(list1)

b_arr=np.array([
   [False, True, False],
   [True, False, True],
   [False, True, False]
])

n = aa[b_arr]

print(n)

[결과]

​[2 4 6 8]

 

부울린 인덱싱 배열을 생성할 때 표현식으로 이용하기

 

배열 a에 대해서 짝수인 배열 요소만 True로 지정하겠다 하면

b_arr = (a %2) = 0)

와 같이 한다.

 

실습8.

import numpy as np

list =[
  [1,2,3],
  [4,5,6],
  [7,8,9]
]

arr = np.array(list)

# 배열 arr에 대해 짝수면 True, 홀수면 False
b_arr=(arr % 2 == 0)

print(b_arr)


print(arr[b_arr])

n = arr[arr%2 == 0]

print(n)

 

[결과]

 

[[False  True False]
 [ True False  True]
 [False  True False]]
[2 4 6 8]
[2 4 6 8]

 

numpy 연산

연산자를 이용할 경우에는 +, -, *, /
함수를 사용할 경우에는 add(), substract(), multiply(), divide()
배열 a와 배열 b가 있을 때, a+b는 a[0]+b[0], a[1]+b[1],...와  같은 방식으로 결과를 리턴한다.

 

 

실습9.

 

import numpy as np

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

#c = a+b
c=np.add(a,b)
print(c)

#c = a-b
c = np.subtract(a,b)
print(c)

#c=a*b
c = np.multiply(a,b)
print(c)

#c= c/b
c=np.divide(a,b)
print(c)

 

[결과]

[5 7 9]
[-3 -3 -3]
[ 4 10 18]
[0.25 0.4  0.5 ]

 

numpy에서 vector와 matrix의 product를 구하기 위해서는 dot()함수를 이용한다.

 

실습10.

import numpy as np

list1=[
   [1,2],
   [3,4]
]

list2=[
   [5,6],
   [7,8]
]

a = np.array(list1)
b = np.array(list2)

print("두 matrix에 대한 product 구하기")

product = np.dot(a,b)

print(product)

 

[결과]

두 matrix에 대한 product 구하기
[[19 22]
 [43 50]]

 

 numpy에서는 배열간의 연산을 위한 여러 함수들을 제공하는데,
각배열의 요소를 더하는 함수 sum(), 배열의 요소들을 곱하는 prod()함수
이 함수들은 axis 옵션을 사용한다.  axis 0이면 컬럼끼리 더함, 1이면 행끼리 더함 

 

실습11.

import numpy as np

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

s = np.sum(a)

print(s)

s = np.sum(a, axis=0)
print(s)

s = np.sum(a, axis=1)
print(s)

p = np.prod(a)

print(p)

p = np.prod(a, axis=0)
print(p) 

p = np.prod(a, axis=1)
print(p) 

 

 

[결과]

10
[4 6]
[3 7]
24
[3 8]
[ 2 12]

 

 

댓글목록

등록된 댓글이 없습니다.



개인정보취급방침 서비스이용약관
Copyright © www.leelab.co.kr All rights reserved.
상단으로
TEL. 063-469-4551 FAX. 063-469-4560
전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과
PC 버전으로 보기