티스토리 뷰

반응형

파이썬 numpy로 단위행렬, 대각 행렬 생성하는 방법과 대각 행렬 요소를 추출하는 방법을 정리해보겠습니다.

numpy에서 identity, eye, diag 함수를 제공합니다. 

 

identity : n 단위 행렬 생성

eye : 대각 행렬 생성

diag : 대각선 요소 추출

identity

identity를 활용하면 필요한 number of rows의 단위행렬을 생성할 수 있습니다.

단위행렬이란 주 대각선 원소가 모두 1이며 나머지 원소는 0인 행렬을 말합니다.

 

np.identity(n=3, dtype=np.int8)

-- 출력 --
array([[1, 0, 0], [0, 1, 0], [0, 0, 1]], dtype=int8)
np.identity(5)

-- 출력 -- 
array([[1., 0., 0., 0., 0.], 
	[0., 1., 0., 0., 0.], 
        [0., 0., 1., 0., 0.], 
        [0., 0., 0., 1., 0.], 
        [0., 0., 0., 0., 1.]])

eye 

대각선인 1인 대각행렬을 생성할 수 있습니다.

k는 값의 시작하는 index이며 필요에 따라 변경 가능합니다.

 

 

np.eye(N=3, M=5, dtype=np.int8)

-- 출력 --
array([[1, 0, 0, 0, 0], 
	[0, 1, 0, 0, 0], 
  	[0, 0, 1, 0, 0]], dtype=int8)
np.eye(3)

-- 출력 --
array([
	[1., 0., 0.], 
    	[0., 1., 0.], 
    	[0., 0., 1.]])
np.eye(3,5,k=2) # k - start index

-- 출력 --
array([[0., 0., 1., 0., 0.], 
	[0., 0., 0., 1., 0.], 
   	[0., 0., 0., 0., 1.]])

diag

대각 행렬의 값을 추출하는 함수입니다.

지정한 k가 start index이며 k부터 대각선으로 요소를 추출합니다.

matrix = np.arange(9).reshape(3,3)matrix

-- 출력 --
array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
np.diag(matrix,k=1) # k - start index

-- 출력 --
array([1, 5])
반응형
댓글