3.1 矩阵基本运算一(矩阵加法、矩阵减法、矩阵数乘)
直接上例子吧
import numpy as np
print("生成两个矩阵")
a = np.arange(1, 11).reshape(2, 5)
b = np.arange(100, 110).reshape(2, 5)
print(a)
print(b)
print("矩阵相加:")
print(a + b)
print("矩阵相减:")
print(b - a)
print("矩阵相乘:")
print(10 * a)
"""
结果为:
生成两个矩阵
[[ 1 2 3 4 5]
[ 6 7 8 9 10]]
[[100 101 102 103 104]
[105 106 107 108 109]]
矩阵相加:
[[101 103 105 107 109]
[111 113 115 117 119]]
矩阵相减:
[[99 99 99 99 99]
[99 99 99 99 99]]
矩阵相乘:
[[ 10 20 30 40 50]
[ 60 70 80 90 100]]
"""
3.2 矩阵的基本运算二(矩阵相乘、逆矩阵、矩阵的特征值和特征向量)
3.2.1 矩阵相乘
矩阵相乘要满足左边的矩阵列数等于右边矩阵的行数。在NumPy库中,可以采用两种方式实现矩阵相乘。设A * B,则代码表示为:
- A.dot(B)
- np.dot(A, B)
import numpy as np
print("生成两个矩阵")
a1 = np.arange(1, 11).reshape(2, 5)
b1 = np.arange(12, 27).reshape(5, 3)
print(a1)
print(b1)
print("矩阵相乘方法一")
print(a1.dot(b1))
print("矩阵相乘方法二")
print(np.dot(a1, b1))
"""
结果为:
生成两个矩阵
[[ 1 2 3 4 5]
[ 6 7 8 9 10]]
[[12 13 14]
[15 16 17]
[18 19 20]
[21 22 23]
[24 25 26]]
矩阵相乘方法一
[[300 315 330]
[750 790 830]]
矩阵相乘方法二
[[300 315 330]
[750 790 830]]
"""
3.2.2 逆矩阵
求矩阵的逆有两种方式:设求矩阵A(A为非奇异矩阵(非奇异矩阵是行列式不为 0 的矩阵,也就是可逆矩阵))
- np.linalg.inv(A):相当于MATLAB中的inv()函数
- .I:.I方法更方便
import numpy as np
a2 = np.array([[1, 2], [3, 4]])
print("逆矩阵方法一")
print(np.linalg.inv(a2))
print("逆矩阵方法二")
A = np.matrix(a2)
print(A.I)
"""
结果为:
逆矩阵方法一
[[-2. 1. ]
[ 1.5 -0.5]]
逆矩阵方法二
[[-2. 1. ]
[ 1.5 -0.5]]
"""
3.2.3 矩阵的行列式
利用np.linalg.det(A),A为方阵。利用np.linalg.det(A)求出来的值是浮点数,如果想得到整数需要使用int强转。
import numpy as np
a3 = np.array([[1, 2], [3, 4]])
print(int(np.linalg.det(a3))) # 结果为:-2
3.2.4 矩阵特征值和特征向量
利用np.linalg.eig(A),利用3.2.2小节的例子
import numpy as np
a2 = np.array([[1, 2], [3, 4]])
A = np.matrix(a2)
print("求矩阵的特征值和特征向量")
eigenvalue, featurevector = np.linalg.eig(A)
print("矩阵的特征值:", end='')
print(eigenvalue)
print("矩阵的特征向量:", end='')
print(featurevector)
"""
结果为:
求矩阵的特征值和特征向量
矩阵的特征值:[-0.37228132 5.37228132]
矩阵的特征向量:[[-0.82456484 -0.41597356]
[ 0.56576746 -0.90937671]]
"""
从Pyzhebzthon数据分析从小白到专家_百度百科这本书上学到的知识!