You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python环境下如何将SVD得到的特征值数组转换为对角矩阵?

Python SVD奇异值数组转对角矩阵方法

针对你64×64矩阵SVD后得到的一维奇异值数组D,有两种常用实现方案:

  • 方案1:调用numpy内置方法(最简便,适配标准对角矩阵需求)
    直接使用numpy.diag()即可直接生成对应尺寸的对角矩阵,代码如下:
    import numpy as np
    # 你的SVD运算代码
    U, D, Vh = np.linalg.svd(A)
    # 一维数组转对角矩阵
    D_new = np.diag(D)
    
    运行后得到的D_new就是n×n的标准对角矩阵,主对角线元素依次对应D中的奇异值,其余位置全为0。你举的示例中D=[d1,d2,d3,d4]的场景,运行后得到的默认结果为[[d1,0,0,0],[0,d2,0,0],[0,0,d3,0],[0,0,0,d4]],如果你之前写的示例中第三行第三列为0是手误,该方案完全匹配需求。
  • 方案2:手动构造(适配自定义对角位置需求)
    如果你确实需要将奇异值放到非主对角线的自定义位置,可以先生成对应尺寸的零矩阵,再手动赋值元素:
    import numpy as np
    U, D, Vh = np.linalg.svd(A)
    # 初始化64×64的零矩阵,dtype和D保持一致
    D_new = np.zeros((64, 64), dtype=D.dtype)
    # 标准主对角线赋值
    for idx, val in enumerate(D):
        D_new[idx, idx] = val
    # 如果要实现你示例里的特殊排列,修改赋值的坐标即可,比如:
    # D_new[2, 3] = D[2]
    

内容的提问来源于stack exchange,提问作者Hermi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:27:05