통계수학_행렬withPython

지선·2023년 4월 12일

졸립지만.. 얼른 작성하고 공부하고 자볼겁니다

Diagonal matrix: 대각성분이 아닌 다른 모든 성분이 0인것
Identity matrix: Diagonal matrix+ 대각성분이 모두 1
Triangular matrix: 대각성분을 기준으로 위or아래가 모두 0인것

Transpose matrix: 행과 열을 바꾸어준 행렬

symmetric: A와 A의 Transpose matrix가 같다는 것
skew-symmetric: 대각성분 전부 0, A의 Transpose matrix가 -A인것
글고.. 알아두어야 할.. 난 몰랐던 theorem은
모든 정방 행렬은 symmetric과 skew-symmetric의 합으로 표현할 수 있다는거..

inverse matrix가 존재하기 위한 필요충분 조건은 determinant가 0이 아니라는 것, 즉, invertible(non-singular)하다는 것

개념은 작년 선형대수학에서 했기에 대충 넘어가고
파이썬으로 들어가봅시다 ~ ㅎ


numpy는 행렬이나 배열을 쉽게 처리할 수 있도록 도와주는 라이브러리고
scipy.linalg는 선형대수를 처리할 수 있게 도와주는 라이브러리다.


np.array를 통해 행렬을 만들 수 있다.
위에 만들어준 것은 사실 벡터.. ㅎ


*.ndim은 차원을 알려준다.
벡터이므로 1차원임을 알 수 있다.


*.shape는 몇행 몇열인지 알려주는데,
벡터는 (개수,)이렇게 알려준다.


*.size는 원소의 개수를 알려준다.

이제 2차원 행렬을 만들어보자

M은 3행 2열을 가진 행렬이다.
예상을 해보자면,
M.ndim은 2, M.shape는 (3,2), M.size는 6일 것이다.




사실 수업시간에 해서 알고 있었다 ㅎ


이제 column, 즉 열을 뽑아보자
다른 예시들도 들어보면 쉽게 이해할 수 있을 것 같다.

그러니까 행렬이름[a,b]이렇게 되어있으면
a를 예시로 들면 : 는 a는 행이니까 모든 행을 선택,
:1 이라면 0행만 선택 :2라면 0,1행 선택
->즉, : 뒤에 써 있는 행 전까지 선택
만약 : 아무것도 쓰지 않았다면 모든 행 선택
뒤에는 열로 생각해서 풀면 똑같이 풀 수 있다.

그리고 reshape를 통해 다른 형태의 행렬로 만들 수 있다.
reshape(a,b)라면 a행 b열로 행렬을 만들어준다.

이런식으로 확인해볼 수 있다.
근데 좀 신기했던거는
[2,7,5]의 경우 1차원 벡터로 보는데
[[2]

[5]

[7]]의 경우는 2차원 행렬로 본다는 점
아마 대괄호의 갯수가 달라서 그런 것 같다.
왜냐면
[[[],[],[]],[[],[],[]]]
이런식으로 나오면 3차원이었다. 본격 나만 이해할 수 있는 아무말 대잔치 ^^...
혹시 정보를 얻기 위해 이 글을 읽고 계신 분들이라면.. 제송합니다..


행렬을 파이썬에서 * 기호로 곱해주면 그냥 원소 각각이 제곱해서 나온다
행렬이 곱해진게 아니라는 뜻


@ 기호를 통해 행렬의 곱을 나타낼 수 있다.


np.eye(a)는 행과 열의 개수가 a인 항등행렬을 만들어준다.


mpow(행렬, a)는 행렬을 a번 곱해준다.

말을 못하니.. 코드로 보여드립니다. ㅎ


*.T는 행렬을 transpose한 것을 보여준다.

행렬과 행렬의 transpose를 곱해주면 symmetric matrix가 나온다.
신기.. 근데 통계에서 행렬을 어떤 방식으로 쓰는 걸까?
사실 보안학과에서 왜 행렬을 배웠는지도 모르겠는데.. 일단 배우고 보는중이다

profile
긍정왕되기

0개의 댓글