Posts [프로그래머스 인공지능스쿨] Week3-1 Python - numpy
Post
Cancel

[프로그래머스 인공지능스쿨] Week3-1 Python - numpy

강의


numpy

1
import numpy as np
행렬 만들기
1
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
요소 참조, 슬라이싱
1
2
3
4
5
arr[1, 2]
# 6

arr[1: , :1]
# 기존 리스트 슬라이싱과 동일
영벡터, 일벡터
1
2
3
np.zeros((3,3))
np.ones((3,1))
#인자는 튜플 형식으로
대각행렬, 항등행렬
1
2
3
4
5
6
7
8
9
np.diag((2,4))
# [[2,0],[0,4]]

np.eye(2)
# [[1,0],[0,1]]

# 인자로 데이터 타입 지정 가능, default는 float

np.eye(2, dtype = int)
행렬 곱
1
2
3
4
5
mat_1 = np.array([[1,4],[2,3]])
mat_2 = np.array([[7,9],[0,6]])

mat_1.dot(mat_2)
mat_1 @ mat_2
트레이스(주 대각선의 합)
1
2
mat_1.trace()
# 4
행렬식(determinant)

행렬을 대표하는 값들 중 하나
ad-bc

1
2
arr = np.array([[2,3],[1,6]])
np.linalg.det(arr)
역행렬
1
2
3
mat = np.array([[1,4],[2,3]])
mat_inv = np.linalg.inv(mat)
I = mat @ mat_inv
고유값과 고유벡터

정방행렬 A에 대해서 \(Ax = \lambda x\)를 만족하는 \(\lambda\)와 x를 각각 고유값과 고유벡터라 한다.

1
2
3
4
5
mat = np.array([[2,0,-2],[1,1,-2],[0,0,1]])
eig_val, eig_vec = np.linalg.eig(mat)
a = mat @ eig_vec[:, 1]
b = eig_val[1] * eig_vec[:,1]
# a == b


Assignment

  1. 어떤 벡터가 주어졌을 때 L2 norm을 구하는 함수 get_L2_norm() 을 작성

    매개변수 : 1차원 벡터 (np.array)
    반환값 : 인자로 주어진 벡터의 L2 Norm값 (number)

1
2
3
4
5
import numpy as np

def get_L2_norm(arr):
    number = np.linalg.norm(arr, 2)
    return number
  1. 어떤 행렬이 singular matrix인지 확인하는 함수 is_singular()를 작성

    매개변수 : 2차원 벡터(np.array)
    반환값 : 인자로 주어진 벡터가 singular하면 True, non-singular하면 False 반환

1
2
3
4
5
6
7
8
import numpy as np

def is_singular(arr):
    det = np.linalg.det(arr)
    if det == 0:
        return True
    else:
        return False


This post is licensed under CC BY 4.0 by the author.