Python NumPy中的diag函数

np.diag(array) 这个函数比较有意思

array是一个1维数组时,结果形成一个以一维数组为对角线元素的矩阵

array是一个二维矩阵时,结果输出矩阵的对角线元素

一般在u,s,vt = svd(data,k) 中比较常用,svd计算出的s是对角线元素的1维数组
用于将s还原为对角线矩阵,即对角线上为非零值,其余位置数值均为0

u,s,vt = svds(users_items_pivot_matrix,k=15)
print(u.shape,s.shape,vt.shape)

(1140,15) (15,) (15,2926)

s_matrix = np.diag(s)
s_matrix.shape

(15,15)

借鉴一个更直观的博文
https://blog.csdn.net/qq_35277038/article/details/80766746

>>> a
array([1, 2, 3])
>>> b
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> np.diag(a)
array([[1, 0, 0],
       [0, 2, 0],
       [0, 0, 3]])
>>> np.diag(b)
array([1, 5, 9])

你可能感兴趣的:(python数据处理)