使用numpy包生成主对角线上全为1的矩阵

您所在的位置:网站首页 单位列向量是指有一个元素为1吗为什么不是1-1 使用numpy包生成主对角线上全为1的矩阵

使用numpy包生成主对角线上全为1的矩阵

2024-07-08 01:42| 来源: 网络整理| 查看: 265

在科学计算中,我们经常需要生成单位矩阵,即主对角线上元素全为1的矩阵。那么如何能够生成主对角线上全为1的矩阵呢?这里我们介绍三种方法。

方法一: np.eye():返回一个对角线上是1,其他位置上全是0的二维矩阵。 代码如下:

import numpy as np class Debug: def mainProgram(self): x1 = np.eye(2) print(x1) if __name__ == "__main__": main = Debug() main.mainProgram() """ result: [[1. 0.] [0. 1.]] """

我们可以看到对于一个2*2的矩阵,对角元素全部为1,其他位置的元素全部为0。

然而这个矩阵的用法远不仅仅于此,我们可以设置它的另一个k参数来调整我们想要选取的对角线位置,默认值k为0,代表从左上方到右下方的对角线。k为1,-1,2的情况如下面的代码所示:

import numpy as np class Debug: def mainProgram(self): x1 = np.eye(2, k =1) print(x1) x2 = np.eye(2, k =-1) print(x2) x3 = np.eye(2, k =2) print(x3) if __name__ == "__main__": main = Debug() main.mainProgram() """ x1: [[0. 1.] [0. 0.]] x2: [[0. 0.] [1. 0.]] x3: [[0. 0.] [0. 0.]] """

我们可以看到k=1时,选取的对角线会向右上方移动一个位置,k=-1时,选取的对角线会向左下方移动一个位置,当k=2时,理论上选取的对角线会向右上方移动两个位置,但是因为我们初始化的是一个2*2的矩阵,所以当选取的对角线向右上方移动两个位置时,已经超出了我们初始化的矩阵大小,因此所有矩阵值均为0。

方法二: np.identity():返回一个对角线上是1,其他位置上全是0的二维矩阵。

import numpy as np class Debug: def mainProgram(self): x = np.identity(2) print(x) if __name__ == "__main__": main = Debug() main.mainProgram() """ result: [[1. 0.] [0. 1.]] """

该函数与np.eye()函数的区别在于,np.identity()函数是np.eye()函数的特殊形式,也就是只能够生成主对角线全部为1的矩阵,简而言之,np.eye()函数包含np.identity()函数。

方法三: np.diag():返回一个提取的对角数组或者创建一个对角数组。

import numpy as np class Debug: @staticmethod def mainProgram(): x = np.diag([1] * 2) print(x) if __name__ == "__main__": main = Debug() main.mainProgram() """ result: [[1 0] [0 1]] """

那么如何生成一个反对角线上全部为1的矩阵呢?请看使用numpy包生成反对角线上全为1的矩阵(超链接点击跳转)

如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3