티스토리 뷰
반응형
파이썬 numpy의 array 사칙연산 및 행렬 계산을 공부하면서 정리한 글입니다.
사칙연산
numpy는 기본적으로 array 간의 사칙연산을 지원합니다.
행과 열이 같은 배열을 계산하면 값은 위치에 있는 값들이 계산됩니다.
이런 현상을 Element-wise operations이라 하며 Shape이 같을 때 발생합니다.
import numpy as np
test_a = np.array([[1,2,3],[4,5,6]], np.float)
덧셈
test_a + test_a
-- 출력 --
array([[ 2., 4., 6.],
[ 8., 10., 12.]])
뺄셈
test_a - test_a
-- 출력 --
array([[0., 0., 0.],
[0., 0., 0.]])
곱셉
test_a * test_a
-- 출력 --
array([[ 1., 4., 9.],
[16., 25., 36.]])
나눗셈
test_a / test_a
-- 출력 --
array([[1., 1., 1.],
[1., 1., 1.]])
Dot product - 행렬 곱
행렬 곱을 사용하려면 기본 연산 dot 함수를 사용하여 할 수 있습니다.
test_a = np.arange(1,7).reshape(2,3)
test_a
-- 출력 --
array([[1, 2, 3],
[4, 5, 6]])
test_b = np.arange(7,13).reshape(3,2)
test_b
-- 출력 --
array([[ 7, 8],
[ 9, 10],
[11, 12]])
test_a.dot(test_b)
-- 출력 --
array([[ 58, 64],
[139, 154]])
transpose
transpose는 행과 열을 바꿔 줍니다.
transpose() 또는 T Attribute를 사용할 수 있습니다.
test_a.T
-- 출력 --
array([[1, 4],
[2, 5],
[3, 6]])
test_b.transpose()
-- 출력 --
array([[ 7, 9, 11],
[ 8, 10, 12]])
test_b.transpose()
-- 출력 --
array([[ 7, 9, 11],
[ 8, 10, 12]])
Broadcating
array operation 중 중요한 개념입니다.
Shape이 다른 배열간 연산을 자동으로 지원하는 기능을 Broadcating이라 합니다.
열 또는 행이 어느 정도 shape이 맞아야 자동으로 계산해줍니다.
test_matrix = np.array([[1,2,3],[4,5,6]], np.float)
scalar = 3
test_matrix + scalar # 전체 행, 열에 모두 Scalar 값이 더해짐
-- 출력 --
array([[4., 5., 6.],
[7., 8., 9.]])
test_matrix - scalar
-- 출력 --
array([[-2., -1., 0.],
[ 1., 2., 3.]])
test_matrix * scalar
test_matrix / scalar
test_matrix // scalar
test_matrix ** scalar
곱셉, 나눗셈, 나머지, 제곱 모두 지원합니다.
test_matrix = np.arange(1,13).reshape(4,3)
test_matrix
-- 출력 --
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
test_vector = np.arange(10,40,10)
test_vector
-- 출력 --
array([10, 20, 30])
test_matrix + test_vector
-- 출력 --
array([[11, 22, 33],
[14, 25, 36],
[17, 28, 39],
[20, 31, 42]])
위 예제는 broadcating 되어 자동으로 계산됩니다.
참고
https://www.youtube.com/watch?v=whtNpVWYLIo&list=PLBHVuYlKEkULZLnKLzRq1CnNBOBlBTkqp&index=7
반응형
'python' 카테고리의 다른 글
numpy csv 파일 읽기, 쓰기 - loadtxt, savetxt, npy 형식 저장 (0) | 2020.02.21 |
---|---|
파이썬 numpy - array의 where, argmax, argmin (0) | 2020.02.14 |
파이썬 numpy 단위행렬, 대각행렬 생성 및 추출 방법. (0) | 2020.02.08 |
파이썬 numpy - array 생성 함수 ones, zeros,empty (0) | 2020.02.07 |
[python] numpy Shape 이란? Shape다루기 (2) | 2020.02.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 노드
- React 프로젝트 생성
- k8s metrics-server
- LeetCode 풀이
- 에라토스테네스
- vscode
- 머신러닝
- 리엑트
- numpy
- Component
- 넘파이
- CHATGOT
- git
- Java leetcode
- 30 Day LeetCode Challenge
- GPT서비스
- Node
- Java
- 퍼셉트론
- 지도학습
- LeetCode 30일 챌린지
- GPTGOT
- k8s metrics-server running
- react
- LeetCode 5월 챌린지
- 파이썬
- LeetCode 알고리즘 공부
- 파이썬 numpy
- 버츄얼스튜디오코드
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함