Python如何将矩阵主对角线元素设置为零
Python实现矩阵主对角线元素赋值为0的方法
你给出的示例为NumPy数组格式,以下分NumPy数组和原生Python嵌套列表两种场景给出对应实现方案:
NumPy数组场景(优先使用内置方法)
- 方案1:调用
numpy.fill_diagonal(性能最高、代码最简)
直接修改原数组,一行代码即可完成操作:
import numpy as np # arr为你的原始NumPy矩阵 np.fill_diagonal(arr, 0)
- 方案2:生成新数组,不修改原始数据
如果需要保留原矩阵的内容,可以先拷贝再修改对应位置:
import numpy as np new_arr = arr.copy() n = new_arr.shape[0] for i in range(n): new_arr[i, i] = 0
原生Python嵌套列表场景
如果你的矩阵是Python内置的嵌套列表结构,直接遍历修改对应位置即可:
# matrix为你的嵌套列表格式矩阵 n = len(matrix) for i in range(n): matrix[i][i] = 0
小贴士:上述所有方案默认处理方阵的主对角线,如果你使用的是非方阵,
numpy.fill_diagonal也可以自动适配行索引等于列索引的所有位置,不需要额外调整参数。
内容的提问来源于stack exchange,提问作者user12217822
相关产品推荐
相关产品推荐

