2-5. 행렬 전치
행렬의 전치: 행과 열의 인덱스를 바꿈(1열→1행, 2열→2행, ..., 1행→1열, 2행→2열, ...), T 또는 transpose() 사용
import numpy as np
matrix=np.array([[1,2,3],
[4,5,6],
[7,8,9]])
# 행렬 전치
matrix.T
### 결과 ###
array([[1,4,7],
[2,5,8],
[3,6,9]])
벡터의 전치는 행벡터를 열벡터로 또는 열벡터를 행벡터로 바꾸는 것
벡터는 값의 모음이기 때문에 원래 기술적으로 전치할 수 없지만 대괄호를 두번 사용하면 전치 가능
matrix=np.array([[1,2,3,4,5,6]])
matrix.T
### 결과 ###
array([[1],
[2],
[3],
[4],
[5],
[6]])
T 대신 transpose() 사용가능, transpose((차원의 튜플))을 통해 바꿀 차원을 직접 지정도 가능
# transpose() 사용
matrix=np.array([[1,2,3],
[4,5,6],
[7,8,9]])
# 행렬 전치
matrix.transpose()
### 결과 ###
array([[1,4,7],
[2,5,8],
[3,6,9]])
# transpose((차원 튜플)) 사용
matrix=np.array([[[1,2],
[3,4],
[5,6]],
[[7,8],
[9,10],
[11,12]]])
matrix.transpose((0,2,1))
### 결과 ###
array([[[1,3,5],
[2,4,6]],
[[7,9,11],
[8,10,12]]])
2×3×2 행렬을 transpose((0,2,1))을 적용하면 2×2×3 행렬로 전치됨, (0,2,1)은 차원의 순서를 나타내는 것으로 원래 차원의 (첫번째 숫자. 세번째 숫자, 두번째 숫자)를 의미
2-6. 행렬 펼치기
행렬을 1차원 배열로 펼치기, flatten()사용
matrix=np.array([[1,2,3],
[4,5,6],
[7,8,9]])
# 행렬 펼치기
matrix.flatten()
### 결과 ###
array([1,2,3,4,5,6,7,8,9])
# reshape() 사용으로도 똑같은 결과를 만들 수 있음
matrix.reshape(1,-1)
### 결과 ###
array([1,2,3,4,5,6,7,8,9])
reshape()는 원본의 뷰를 반환하여 원본의 값을 바꾸면 reshape()로 바꾼 배열의 값도 바뀜
flatten()은 새로운 배열을 만드는 것이므로 원본의 값을 바꿔도 값이 바뀌지 않음
2-7. 행렬의 랭크
행렬의 차원 수를 뜻함
2-8. 행렬식 계산
행렬식은 행렬을 대표하는 값으로 다음과 같이 계산

2×2 행렬의 행렬식

3×3 행렬의 행렬식

파이썬에서는 numpy의 선형대수 메서드 det 사용
import numpy as np
matrix=np.array([[1,5,0],
[2,4,-1],
[0,-2,0]])
# 행렬식 계산
np.linalg.det(matrix)
### 결과 ###
-1.9999999999999998
2-9. 행렬의 대각원소
정방행렬에서 대각선에 위치한 원소(1행1열, 2행2열, 3행3열...에 해당하는 원소), diagnoal() 사용
import numpy as np
matrix=np.array([[1,2,3],
[2,4,6],
[3,8,9]])
# 행렬의 대각원소 반환
matrix.diagonal()
### 결과 ###
array([1,4,9])
offset 매개변수를 이용하면 대각원소 하나 위 또는 아나 아래의 원소를 반환
matrix=np.array([[1,2,3],
[2,4,6],
[3,8,9]])
# 행렬의 대각원소 하나 위의 원소 반환
matrix.diagonal(offset=1)
### 결과 ###
array([2,6])
# 행렬의 대각원소 하나 아래의 원소 반환
matrix.diagonal(offset=-1)
### 결과 ###
array([2,8])

np.diag()에서 ()에 1차원 배열을 넣으면 1차원 배열을 대각원소로 하는 2차원 대각행렬을 생성
a=np.diagonal(matrix)
print(a)
### 결과 ###
array([1,4,9])
# 1차원 배열의 대각원소 사용하여 2차원 대각행렬 만들기
np.diag(a)
### 결과 ###
array([[1,0,0],
[0,4,0],
[0,0,9]])
trace()를 사용하여 대각원소의 합인 대각합 계산
matrix=np.array([[1,2,3],
[2,4,6],
[3,8,9]])
matrix.traace()
### 결과 ###
14
# matrix의 대각원소는 [1,4,9]이므로 1+4+9=14
'Python > 기본문법' 카테고리의 다른 글
데이터 랭글링 (2) (0) | 2023.06.26 |
---|---|
데이터 랭글링 (1) (0) | 2023.06.23 |
데이터 적재 (0) | 2023.06.22 |
Numpy로 배열, 벡터, 행렬 이해하기 (3) (0) | 2022.10.20 |
Numpy로 배열, 벡터, 행렬 이해하기 (1) (0) | 2022.10.17 |