Numpy如何将单位矩阵转换为仅左上角元素为1的目标矩阵
解决方案
你可以通过索引赋值的方式快速修改单位矩阵得到目标结果,以下是几种常用的实现方式:
- 方法1:直接将除第一行外的所有行置0,适合明确只保留第一行首元素的场景
import numpy as np # 生成3阶单位矩阵 arr = np.eye(3) # 行索引从1开始的所有行统一赋值为0 arr[1:] = 0 print(arr)
输出结果:
[[1. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
- 方法2:基于单位矩阵生成同维度全0矩阵,单独给第一个元素赋值,通用性更强,不受原矩阵维度影响
import numpy as np arr = np.eye(3) res = np.zeros_like(arr) res[0, 0] = arr[0, 0] print(res)
- 方法3:修改对角线元素的值,适合需要保留其他位置原有值的复杂场景
import numpy as np arr = np.eye(3) # 从索引1开始的对角线元素全部置0 np.fill_diagonal(arr[1:], 0) print(arr)
以上三种方法都可以得到你需要的输出,根据实际使用场景选择即可。
内容的提问来源于stack exchange,提问作者user17344362
相关产品推荐
相关产品推荐

