知方号

知方号

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

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

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

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

import numpy as npclass 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 npclass 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 npclass 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 npclass 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的矩阵(超

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。