biotechknowledge

[파이썬을 활용한 선형대수학] 행렬 기본 조작 (매서드, 함수) 본문

IT.DT

[파이썬을 활용한 선형대수학] 행렬 기본 조작 (매서드, 함수)

준2준2 2024. 12. 22. 15:40

 

https://www.inflearn.com/course/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98%ED%95%99/dashboard

 

파이썬을 활용한 선형대수학 - NumPy와 SciPy의 활용 강의 | 조범희 (타블렛깎는노인) - 인프런

조범희 (타블렛깎는노인) | 이 강좌에서는 파이썬의 SciPy 라이브러리를 활용하여 다양한 행렬계산 관련 문제들을 푸는 방법을 배웁니다.파이썬을 몰라도, 선대개 지식이 얕아도 주어진 문제를

www.inflearn.com

 

 

np.copy()

프로그래밍의 기초 개념이다. b=a 는 a와 b가 동일한 주소를 저장하는 것이고 같은 객체를 참조한다. a 가 가르키는 행렬객체를 그대로 복사해서 b 에 할당하고 싶으면 copy 매서드를 이용해서 b = np.copy(a) 를 사용해야 한다.

 

 

np.reshape()

같은 메모리 공간을 참조한다. a와 b의 출력모양은 다르지만 같은 메로리공간을 가르키고 있다.

 

np.tril() / np.triu()

다른 메모리 주소를 가르킨다. 대각선 성분과 위,아래성분을 가져오고 나머지 성분은 0으로 채운다.

 

np.diag()

대각선 성분을 가져와 1D array 로 만든다. 같은 메모리 공간을 참조한다.

 

이 경우에는 a,b 가 다른 메모리 주소를 가르킨다.

 

np.diagflat()

2d array 가 매개변수로 들어오면 1d  array로 펴서 정사각행렬 생성. 서로 독립된 형태로 활동한다. = 서로 다른 메모리 주소를 가르킨다. = copy해서 저장한다.

 

np.trace()

대각선의 합을 구한다. offset 매겨밴수로 band 위치를 정할 수 있다.

 

flatten() / np.ravel()

array을 1D로 변환하여 copy하여 반환한다. ravel은 동일한데 같은 메모리 참조한다는 차이가 있다. flatten은 Numpy 배열 객체의 매서드이다. ravel()은 Numpy 모듈의 함수이다. Numpy 패키지 내에서 독립적으로 호출하여 배열 a를 인자로 받는다.

 

np가 붙어있는건 Numpy 패키지의 함수이고  flatten은 객체의 매서드이다.

 

a = np.array([
    [1,2,3,4,5],
    [6,7,8,9,10],
    [11,12,13,14,15]
])

b = a # = 는 같은 메모리 참조
c = np.copy(a) # 같은 내용의 array 객체 생성

a = np.reshape(a, (5,3)) # 행렬을 5x3 으로 재배열열

bt = np.triu(a) # K=0 대각선 성분을 포함한 위쪽 삼각형만 유지하고 아래쪽은 0으로 채움

bt = bt.flatten() # bt를 1D array 형태로 재배열

bt = np.diagflat(bt) # 1D array를 diagflat 함수를 이용해여 정사각 행렬을만듬.

val = np.trace(bt) #trace를 통해 K=0인 대각선분의 합을 구한다. 매개변수 안주면 기본값 0으로 설정정

print(val)