본문 바로가기
대학원 공부/programming language

Numpy : np.linalg.svd (SVD)

by 월곡동로봇팔 2020. 3. 12.

np.linalg :

선형대수 method가 담겨져있다.

 

np.linalg.svd(A, full_matrices=True, compute_uv)
full_metrics

  • defualt=True, True일 경우, A가 (M,N)일 때 U = (M,M), V=(N,N)
  • False일 경우, A가 (M,K)일 때, U=(M,K), V=(K,N), K = min(M,N)
A = np.array([[0,0,0,1,0,1,1,0,0],
            [0,0,0,1,1,0,1,0,0],
            [0,1,1,0,2,0,0,0,0],
            [1,0,0,0,0,0,0,1,1]])

U, s, VT = np.linalg.svd(A, full_matrices=False)

print('U : {}, \nU\'s shape : {}'.format(U.round(2), U.shape))
print('s : {}, \ns\'s shape : {}'.format(s.round(2), s.shape))
print('VT : {}, \nVT\'s shape : {}'.format(VT.round(2), VT.shape))
np.shape(VT)
print('-------------------------------------------------------')
U, S, VT = np.linalg.svd(A, full_matrices=True)

print('U : {}, \nU\'s shape : {}'.format(U.round(2), U.shape))
print('s : {}, \ns\'s shape : {}'.format(s.round(2), s.shape))
print('VT : {}, \nVT\'s shape : {}'.format(VT.round(2), VT.shape))
np.shape(VT)
"""
U : [[-0.24  0.75  0.   -0.62]
 [-0.51  0.44 -0.    0.74]
 [-0.83 -0.49 -0.   -0.27]
 [-0.   -0.    1.    0.  ]], 
U's shape : (4, 4)
s : [2.69 2.05 1.73 0.77], 
s's shape : (4,)
VT : [[-0.   -0.31 -0.31 -0.28 -0.8  -0.09 -0.28 -0.   -0.  ]
 [ 0.   -0.24 -0.24  0.58 -0.26  0.37  0.58 -0.   -0.  ]
 [ 0.58 -0.    0.    0.   -0.    0.   -0.    0.58  0.58]
 [ 0.   -0.35 -0.35  0.16  0.25 -0.8   0.16 -0.   -0.  ]], 
VT's shape : (4, 9)
-------------------------------------------------------
U : [[-0.24  0.75  0.   -0.62]
 [-0.51  0.44 -0.    0.74]
 [-0.83 -0.49 -0.   -0.27]
 [-0.   -0.    1.    0.  ]], 
U's shape : (4, 4)
s : [2.69 2.05 1.73 0.77], 
s's shape : (4,)
VT : [[-0.   -0.31 -0.31 -0.28 -0.8  -0.09 -0.28 -0.   -0.  ]
 [ 0.   -0.24 -0.24  0.58 -0.26  0.37  0.58 -0.   -0.  ]
 [ 0.58 -0.    0.    0.   -0.    0.   -0.    0.58  0.58]
 [ 0.   -0.35 -0.35  0.16  0.25 -0.8   0.16 -0.   -0.  ]
 [-0.   -0.78 -0.01 -0.2   0.4   0.4  -0.2   0.    0.  ]
 [-0.29  0.31 -0.78 -0.24  0.23  0.23  0.01  0.14  0.14]
 [-0.29 -0.1   0.26 -0.59 -0.08 -0.08  0.66  0.14  0.14]
 [-0.5  -0.06  0.15  0.24 -0.05 -0.05 -0.19  0.75 -0.25]
 [-0.5  -0.06  0.15  0.24 -0.05 -0.05 -0.19 -0.25  0.75]], 
VT's shape : (9, 9)
(9, 9)
"""

 

댓글