안녕하세요, 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 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]
'파이썬 (Python) > Numpy' 카테고리의 다른 글
Python 파이썬 numpy, matplotlib 모듈로 그래프를 손쉽게 그려보자 (1) | 2021.02.26 |
---|---|
Python 파이썬 numpy 함수 any, all, where, 행렬 인덱싱(index)과 슬라이싱 (1) | 2021.02.25 |
Python 파이썬 numpy 함수 행렬간 사칙 연산 (add, substract, multiply, divide) 누적 합계, 평균, 최대값, 조건값의 인덱스 출력 (1) | 2021.02.25 |
Python 파이썬 numpy 함수 Boolean indexing 리스트, 조건 값에 맞춰서 리스트 화 (0) | 2021.02.22 |
Python 파이썬 Deep Learning, 정교한 수계산 라이브러리, numpy 내용 함수 활용하기 Part 1 (4) | 2021.02.18 |
댓글