[2022 국민대학교 겨울 인공지능 특강] 1주차 2일 학습 내용

하지원·2022년 1월 4일
0

Numpy 모듈에 대해 배웠다. 웨이센 인턴과 다학제간캡스톤디자인II 수업 프로젝트와 과제로 파이썬을 다루면서 사용해본 경험이 있어 많이 익숙한 분야였다.
리스트가 있는데 굳이 numpy를 이용해서 배열(array)로 변환하려는 이유는 데이터 조회를 더 빠르게 하기 위해서라고 한다. 강의에서는 다뤄지지는 않았지만 배열은 데이터 조회는 빠르지만 내용물 수정이 힘들다는 단점이 있다고 한다. 리스트에 비한 단점이다.
슬라이싱(Slicing)이라는 개념을 전에도 들어본적은 있었지만 이번 강의를 통해서 정확하게 알게 되었다. [a:b]로 설정할 때 범위가 a이상 b미만인 구간이다. 앞으로 햇갈릴 일 없을것 같다.
브로드캐스팅(broadcasting)이라는 개념은 이번 강의를 통해 처음 알았다. 서로 크기가 다른 행렬이 있을 때, 행이나 열 중 하나라도 크기가 같을 경우, 다른 한쪽도 그 것에 맞추어 다시 연산을 진행하는 특수한 방법이라 한다. 행 수가 다르면 그만큼 열을 반복하고, 열 수가 부족하면 그만큼 행을 반복하여 행렬 크기를 서로 맞추는 것이다. 브로드캐스팅은 그냥 연산을 하다보면 자동으로 된다고 한다.

Numpy를 이용한 선형대수에 대해서도 배울 수 있었다. 영벡터인 np.zeros(), 일 병렬인 np.ones() 모두 알고 있었지만, 대각 행렬(np.diag((a, b))), 항등 행렬(np.eye(n, dtype= )), 행렬 곱(np.dot() 혹은 a @ b)은 전혀 생각지도 못했던 것들이었다. 이용할 기회도 없었고.
또한 main diagonal의 합을 구하는 trace(arr.trace()), determinant 구하기(np.linalg.det()), 역행렬(np.linalg.inv()), 그리고 고유값과 고유벡터(np.linalg.eig())도 구할 수 있다는 것을 배웠다.

profile
국민대 전자공학부, 서강대학교 석사과정, 크래프톤 정글 2기

0개의 댓글