본문 바로가기
파이썬 (Python)/Numpy

Python 파이썬 numpy 함수 empty, full, eye, shape, reshape, linspace, broadcasting

by ★√★ 2021. 2. 22.

안녕하세요, Davey 입니다. 오늘은 numpy 함수 empty, full, eye, shape, reshape, linspace, broadcasting 에 대해서 설명 해드리도록 하겠습니다. 개발자들이 정말 많이 사용하고, Deep Learning, 정교한 수계산에도 많이 이용된다고 합니다.

 

 

1. empty, full 함수 활용하기

 

1) empty 함수 
  : 선언한 행렬에, 무작위의 값을 모든 값에 입력하는 함수 기본 구문은 아래와 같습니다.
  -> numpy.empty((행렬), 값1) 

- 쉬운 이해를 돕기 위해서 아래와 같이 간단하게 Code를 구현해서 보여드리도록 하겠습니다. 

============================================

import numpy as np

np.empty((6,6)) # 6x6 행렬에 무작위의 값을 다 입력함.


============================================

- 위 코드를 실행시켜 보시면 아래와 같이 무작위의 값으로 이뤄진, 요청 행렬을 아래와 같이 확인 하실 수 있습니다.

 

 

 

 
 2) full 함수 
 : 선언한 행렬에, 특정한 숫자 or 문자를 모든 값에 입력하는 함수입니다. 기본 구문은 아래와 같습니다.
 -> np.full((행렬 선언 값), 일괄적으로 입력해야하는 조건 값)

- 쉬운 이해를 돕기 위해서 아래와 같이 간단하게 Code를 구현해서 보여드리도록 하겠습니다. 

============================================

import numpy as np

np.full((2,2),10) # 2x2 행렬에 "10" 을 모두 입력함.

============================================

 

- 위 코드를 실행시켜 보시면 아래와 같이 "10" 이 모든 행렬 값에 들어있는 것을 아래와 같이 확인 하실 수 있습니다.

 

 

 

2. eye, shape, reshape, linspace 활용 하기

 

 1) eye 함수

  : 선언한 행렬 크기에 맞게 단위행렬을 만들어 주는 함수입니자. 기본 구문은 아래와 같습니다.
 -> np.eye(행렬 조건 값)

- 쉬운 이해를 돕기 위해서 아래와 같이 간단하게 Code를 구현해서 보여드리도록 하겠습니다. 

============================================

import numpy as np

np.eye(5) # 5x5 단위 행렬을 만들어 주는 함수



============================================

- 위 코드를 실행시켜 보시면 아래와 같이 5x5 크기의 단위 행렬이 만들어 지는 것을 아래와 같이 확인 하실 수 있습니다.

 

 

 

 

 2) shape
 : 주어진 행렬 크기를 알아보기 위한 함수 입니다. 기본 구문은 아래와 같습니다.
-> (list화 한 변수).shape 

- 쉬운 이해를 돕기 위해서 아래와 같이 간단하게 Code를 구현해서 보여드리도록 하겠습니다. 

============================================

import numpy as np
test01 = np.arange(1,100)
test01.shape



============================================

 

- 위 코드를 실행시켜 보시면 아래와 같이 행렬의 크기인 "99" 가 출력이 되는 걸 확인 하실 수 있습니다.

 

 

 



3) reshape
: 주어진 행렬의 형태를 변환 시켜주는 위한 함수 입니다. 기본 구문은 아래와 같습니다.
-> (list화 한 변수).reshape(행렬 조건 값) 

- 쉬운 이해를 돕기 위해서 아래와 같이 간단하게 Code를 구현해서 보여드리도록 하겠습니다. 

============================================

import numpy as np
test01 = np.arange(1,100)
test01.reshape(3,33) 



============================================

 

- 위 코드를 실행시켜 보시면 아래와 같이 행렬의 배열이, 3x33 으로 변환 되는 걸 확인 하실 수 있습니다.

 

 

 


- 하나의 팁을 드리자면, 행, 열 중에 하나만 정하고, 다른 부분에 대해서 알아서 계산해달라고 요청을 할 때는 아래와 같이 "-1"을 입력하면 됩니다. 

============================================

import numpy as np
test01 = np.arange(0,100)
test01.reshape(5,-1) # 2x50 의 행렬로 자동계산하여, reshape 해줍니다. 



============================================

- 위 코드를 실행시켜 보시면 아래와 같이 행렬의 배열이, 알아서, 5x20 으로 변환 되는 걸 확인 하실 수 있습니다.

 

 

 

- reshape 함수를 수행 할 때, 만약, '-1'을 사용하지 않고, User가 계산을 했을 경우, 맞은 경우와 틀린 경우에 대해서 아래와 같이 추가적인 예제를 통해 보여 드리도록 하겠습니다.

 

  Case #1 차원이 잘 맞아서, 실행이 될 경우

 

 

 

 

 Case #1 차원이 맞지 않아 을 경우

 

 

 

 

4) linspace
: 정해진 범위를, 주어지는 조건 값에 맞춰서, 계산하여, 축소하여 list 화 시키는 함수 입니다. 기본 구문은 아래와 같습니다. 
-> np.linspace(범위 시작값, 범위 끝값, 범위를 얼마만큼 압축해서 표현하는 조건 값)

- 쉬운 이해를 돕기 위해서 아래와 같이 간단하게 Code를 구현해서 보여드리도록 하겠습니다. 

============================================

np.linspace (1,50,3) # 1~50 사이의 값을 3등분하여 표현해줌
np.linspace (1,50,5) # 1~50 사이의 값을 5등분하여 표현해줌
np.linspace (1,50,6) # 1~50 사이의 값을 6등분하여 표현해줌

============================================

 

- 위 코드를 실행시켜 보시면 아래와 같이, 범위를 정해준 조건 값에 맞춰서, 등분하여 표현 되는 걸 확인 하실 수 있습니다.

 

 

3. broadcasting 기능

 

: Shape이 100 % 맞지 않음에도 불구하고 연산이 가능하게 함. 그리고 사칙연산이 행렬 간 행렬과 상수간 가능하게 하는 기능

1) broadcasting 기능 - 행렬간 사칙 연산
- 뒷 행렬부터 비교해서 연산이 가능한지 확인하고 실행을 함. 
 

Case #1 (3,4) + (1,4) : 가능

 

 

 

 


  Case #2 (3,4) + (1,5) : 불가능

 

 

 

 

  Case #3 (3,5) + (1,5) 가능

 

 

 


2) broadcasting 기능 - 행렬과 상수 간 사칙 연산
 : 행렬과 상수와 사칙연산을 하게 되면, 행렬의 배열과 상관없이 행렬값에 그 상수로 사칙연산이 모두 이뤄집니다.

   아래 4가지 Case를 가지고 Code 작성해서 실행 시켜 보겠습니다.

 

  Case #1 : test01 + 10

  Case #2 : test01 - 10

  Case #3 : test01 * 10

  Case #4 :  test01 / 10

 

============================================

 

import numpy as np

test01=np.arange(0,15)

T_test01 = test01.reshape(3,5)

print(T_test01)

print()

test02 = T_test01 + 10
test03 = T_test01 - 10
test04 = T_test01 * 10
test05 = T_test01 / 10

print(test02)

print()

print(test03)

print()

print(test04)

print()

print(test05)

 

============================================

 

- 위 코드를 실행시켜 보시면 아래와 같이, 상수와 사칙 연산이 이뤄지는 걸 확인 하실 수 있습니다.

 

이상입니다. 정말 numpy는 유용한 거 같습니다. 나중에 Deep Learning이나, Panda 이용하실 때도 많이 이용하게 되실 겁니다. 하나 하나 예제를 준비하다 보니까, 시간이 좀 많이 소요 됐던 거 같습니다. 하지만, 제가 시간 투자 한 만큼 누군가에게는 도움이 되실거라고 믿고 꾸준히 Posting하도록 하겠습니다. (저도 이렇게 Positng 함으로써, 기억하고 복습하는데 많은 도움이 되고 있습니다.) 그럼 오늘도 같이 성장하시죠! 감사합니다.

 

제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.

 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

728x90

댓글