下面就来详细讲解“python生成单位阵或对角阵的三种方式小结”的完整攻略。
1. 生成单位阵的方法
生成单位阵可以通过numpy库中的函数numpy.eye(N, M=None, k=0, dtype=<class 'float'>, order='C')
来实现,其中参数含义如下:
- N:int类型,表示生成的矩阵的行数。
- M:int类型,可选参数,默认值为None,表示生成的矩阵的列数。当M=None时,M的值将默认为N。
- k:int类型,可选参数,默认值为0,表示对角线偏移量。对于主对角线k=0,对于主对角线上侧k> 0,对于主对角线下侧k<0。
- dtype:数据类型,可选参数,默认为float类型,表示生成的矩阵中元素的数据类型。
- order:‘C’或者‘F’,表示生成的数组的内存布局。C和F分别表示C语言和FORTRAN语言的内存布局,默认为C。
示例如下:
import numpy as np
# 生成3行3列的单位矩阵
I = np.eye(3)
print(I)
输出:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
2. 生成对角阵的方法
2.1 使用numpy库中的diag函数
可以通过numpy库中的函数numpy.diag(v, k=0)
生成一个对角矩阵,其中参数含义如下:
- v:一维数组或者列表,生成对角矩阵的对角线元素。
- k:int类型,表示对角线偏移量。对于主对角线k=0,对于主对角线上侧k> 0,对于主对角线下侧k<0。
示例一:
import numpy as np
# 生成对角线元素为[1, 2, 3]的对角矩阵
D = np.diag([1, 2, 3])
print(D)
输出:
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
示例二:
import numpy as np
# 生成主对角线上偏移1个单位的对角矩阵
D = np.diag([1, 2, 3], k=1)
print(D)
输出:
array([[0, 1, 0, 0],
[0, 0, 2, 0],
[0, 0, 0, 3],
[0, 0, 0, 0]])
2.2 使用scipy库中的diag函数
scipy库中的diag函数功能与numpy库中的diag函数类似,不过scipy库中的diag函数可以接受一个矩阵作为参数,并将其对角线上的元素提取出来生成一个向量。
示例一:
import numpy as np
from scipy.linalg import diag
# 生成对角线元素为[1, 2, 3]的对角矩阵
D = diag([1, 2, 3])
print(D)
输出:
array([1., 2., 3.])
示例二:
import numpy as np
from scipy.linalg import diag
# 生成主对角线上偏移1个单位的对角矩阵
A = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]])
D = diag(A)
print(D)
输出:
array([ 1, 6, 11, 16])
3. 生成单位矩阵或对角矩阵的更多方法
除了以上方法,还可以通过其他方式生成单位矩阵或对角矩阵,比如:
- 利用numpy中的identity函数来生成单位矩阵。
- 利用numpy中的zeros函数来生成全零矩阵,然后对角线元素赋值为1来生成单位矩阵。
- 利用numpy中的ones函数来生成全1矩阵,然后对角线元素赋值为0来生成对角矩阵。
- ... ...
以上就是python生成单位阵或对角阵的三种方式小结的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python生成单位阵或对角阵的三种方式小结 - Python技术站