python library

numpy : A matrix Library in python (2차원 배열)

2021. 10. 28. 13:55
목차
  1. ▷ 배열 생성 기초
  2. ▷ 행렬의 연산
  3. ▷ 전치 행렬 ( transposed matrix ), 단위 행렬 ( Identity matrix ) , 역행렬 ( inverse matrix )
  4. ※ linalg.inv vs linalg.pinv 
  5. pinv()
  6. inv() 
  7. ※ numpy.arange vs numpy.linspace
  8. numpy.arange
  9. numpy.linspace
  10. ▷ vstack, hstack
  11. ▷ 정규분포, 균등분포 관련 함수
  12. ▷ numpy.random.randint
반응형

※ numpy.array can contain a homogeneous data type ( vs. list and tuple )

 

선형대수학(linear algebra) 지식이 요구된다. 

 

 

▷ 배열 생성 기초

  • 파이썬은 배열을 0부터 계산하기 때문에 1행 3열을 가져오고 싶으면 [0][2]를 가져와야 함
  • 범위를 넘어서는 값을 가져오면 당연히 오류가 난다.
import numpy as np

array1 = np.array([[1, -1, 2],
                  [3, 2, 2],
                  [4, 1, 3],
                  [7, 5, 6]])

array2 = np.random.rand(3, 5)   # 3 * 5 행렬 생성
array3 = np.zeros((2, 4))       # 2 * 4 행렬 생성, 괄호 한번 더 치는거 주의!

# indexing
print(array1[0][2])

 

 

 

▷ 행렬의 연산

  • 행렬의 곱셈이 추가된 것 이외에는 1차원 배열의 연산과 거의 동일하다 (+, -, *, /, ...)
  • +, -, *, /, ... : 요소들 간의 합, 차, 곱, 나눗셈
  • 행렬의 곱셈에는 dot, matmul 두 가지가 존재한다.
  • 지금 단계에서는 dot과 matmul의 차이가 이해가 되지 않으니, 일단 matmul을 행렬의 곱셈에서 사용하는 것으로 하겠다. (python 3.5 이후부터는 matmul == @ 로 표현한다)

※ matmul vs dot 

참고 : https://stackoverflow.com/questions/34142485/difference-between-numpy-dot-and-python-3-5-matrix-multiplication 

 

 

 

▷ 전치 행렬 ( transposed matrix ), 단위 행렬 ( Identity matrix ) , 역행렬 ( inverse matrix )

 역행렬은 n * n matrix (square matrix) 에서만 정의되는 것을 주의하자.

import numpy as np

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

# 두 가지 방법
A_transpose = np.transpose(A)
A_transpose2 = A.T


I = np.identity(3)


A_inverse = np.linalg.pinv(A)

 

 

※ linalg.inv vs linalg.pinv 

pinv()

  • It is used to handle Singular as well as Non-Singular Matrices, it refers to the pseudo-inverse of a matrix.
  • The pinv() function involves the use of floating-point arithmetic.

inv() 

  • It is used to handle Non-Singular Matrices, it refers to inverse of a matrix.
  • The inv() function doesn’t involve use of floating-point arithmetic.

참고 : https://www.geeksforgeeks.org/differenece-between-inv-and-pinv-functions-in-matlab/

 

 

※ numpy.arange vs numpy.linspace

https://stackoverflow.com/questions/62106028/what-is-the-difference-between-np-linspace-and-np-arange

numpy.arange

  • arange([start,] stop[, step])
  • Excludes the maximum value unless rounding error makes it do otherwise.

numpy.linspace

  • arange([start,] stop[, num])
  • Returns num evenly spaced samples, calculated over the interval [start, stop].
  • The endpoint of the interval can optionally be excluded.
import numpy as np

viz_range = np.array([-6, 12])
xs = np.arange(*viz_range, 20)
print(xs)

#result
[-6]

viz_range = np.array([-6, 12])
xs = np.linspace(*viz_range, 20)
print(xs)

# result
[-6.         -5.05263158 -4.10526316 -3.15789474 -2.21052632 -1.26315789
 -0.31578947  0.63157895  1.57894737  2.52631579  3.47368421  4.42105263
  5.36842105  6.31578947  7.26315789  8.21052632  9.15789474 10.10526316
 11.05263158 12.        ]

 

 

 

▷ vstack, hstack

vstack : 배열을 세로로 결합할 때 사용한다.

hstack : 배열을 가로로 결합할 때 사용한다.

 

 

▷ 정규분포, 균등분포 관련 함수

참고 : https://coding-grandpa.tistory.com/entry/NumPy-%EC%A0%95%EA%B7%9C%EB%B6%84%ED%8F%AC-%EA%B7%A0%EB%93%B1%EB%B6%84%ED%8F%AC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0-nprandomnormal-uniform-Creation-Function-IV

 

▷ numpy.random.randint

  • random.randint(low, high=None, size=None, dtype=int)
  • Return random integers from low (inclusive) to high (exclusive).
  • [low, high) : (주의) high 포함 안함

 

 

반응형

'python library' 카테고리의 다른 글

Pandas  (0) 2021.11.19
Jupyter Notebook 기본  (0) 2021.11.18
기본 지도 학습 알고리즘 : 선형 회귀(Linear Regression)  (0) 2021.11.04
numpy 기초(1차원 배열)  (0) 2021.10.28
  1. ▷ 배열 생성 기초
  2. ▷ 행렬의 연산
  3. ▷ 전치 행렬 ( transposed matrix ), 단위 행렬 ( Identity matrix ) , 역행렬 ( inverse matrix )
  4. ※ linalg.inv vs linalg.pinv 
  5. pinv()
  6. inv() 
  7. ※ numpy.arange vs numpy.linspace
  8. numpy.arange
  9. numpy.linspace
  10. ▷ vstack, hstack
  11. ▷ 정규분포, 균등분포 관련 함수
  12. ▷ numpy.random.randint
'python library' 카테고리의 다른 글
  • Pandas
  • Jupyter Notebook 기본
  • 기본 지도 학습 알고리즘 : 선형 회귀(Linear Regression)
  • numpy 기초(1차원 배열)
나른한 찰리
나른한 찰리
반응형
나른한 찰리
Moojun's Storage
나른한 찰리
전체
오늘
어제
  • 분류 전체보기 (83)
    • 포트폴리오 스프링 부트 프로젝트 (1)
    • 멘질멘질] 2023 졸업 프로젝트 (16)
    • 학부연구생 (5)
    • Spring Boot (17)
      • Test Code (10)
    • Amazon Web Services(AWS) (3)
    • Ubuntu Server (1)
    • RDB (6)
    • git (1)
    • 오류 (9)
    • MacOS (4)
    • python library (5)
    • 기타 (8)
    • 프로그래밍 도서 (4)
      • 클린 코드(로버트 마틴) (4)
    • 코딩 테스트 (3)
      • 프로그래머스 (3)
    • 회고 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 우분투#ubuntu#mysql#mysql설치#mysql오류
  • pandas#dataframe

최근 댓글

최근 글

hELLO · Designed By 정상우.
내 관리 화면으로 이동
나른한 찰리
numpy : A matrix Library in python (2차원 배열)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.