python怎么让矩阵内所有元素⾃⼰平⽅_Python与线性代数基
本概念
#「闪光时刻」主题征⽂ ⼆期#
在Python中使⽤Numpy创建向量:
x = np.array([1, 2, 3, 4])
创建3 x 3矩阵
B = np.array([[1, 2],[3, 4],[5, 6]])
Shape形状,也可称为维度,表⽰矩阵中每个维度的具体数值;
B.shape 3 x 2
python怎么读的转置
⾏向量可转置为列向量,列向量转置为⾏向量
如为⽅阵转置后⾏数列数不变,对于⾮⽅阵,2 x 3矩阵转置后为3 x 2矩阵
B_t = A.T
检查转置后形状shape
B_t.shape
矩阵加法
矩阵相加为两个矩阵对应的元素相加;
A = np.array([1,2],[3,4])
B = np.array([4,5],[5,6])
C = A + B = [[5, 7],[8, 10]]
如标量与矩阵相加规则为:标量与矩阵中对应的每个元素相加;
⼴播
⼴播为Numpy的机制,使得Numpy可以处理各个不同形状(shape)之间的操作,较⼩的阵列将会被扩充以匹配较⼤的阵列形状;
就如上⾯使⽤标量与矩阵做相加元素,实际上Numpy把标量转成了与矩阵相同维度的矩阵与该矩阵进⾏相加;
⽐如⼀个3 x 2 矩阵与⼀个3 x 1矩阵相加,Numpy会⾃动把3 x 1矩阵复制⼀列形成3 x2矩阵与该3 x 2矩阵相加,使得两个矩阵的shape能够匹配;
矩阵乘法
矩阵乘法与矩阵加法规则并不⼀样,不是两个矩阵对应的元素相乘,⽽是计算矩阵⾏与列对应元素乘积之和;也称为点积;
矩阵乘法是否有定义,前⼀个矩阵的列数必须等于后⼀个矩阵的⾏数;如n x p与p x m两个矩阵相乘结果为n x m矩阵;
两个矩阵相乘可以看作是第⼀个矩阵的每⼀⾏与第⼆个矩阵的每⼀列之间的点积;
可以使⽤Numpy的dot()函数计算两个矩阵的乘积;
A = [[2, 3],[3, 4]]
B = [[1, 1],[3, 4]]
C = np.dot(A, B)
也可以使⽤ C =A.dot(B)
线性⽅程组
线性⽅程组为线性代数⽤来解决的重要问题之⼀,
x1 – 2*x2+x3 = 0
2*x2 - 8*x3 = 8
-4*x1 + 5*x2 + 9*x3 = -9
矩阵B每⾏为上述⽅程的常数,A矩阵每⾏为⽅程组中的每个⽅程系数;
A = np.array([[1 ,-2 ,1],[0 ,2 ,-8],[-4 ,5 9]])
B = np.array([0 ,8 ,-9])
Y= np.linalg.solve(A,B)= [29. 16. 3.]
单位矩阵
任何向量与单位矩阵相乘结果为他本⾝,单位矩阵:所有沿主对⾓线元素都是1,⽽其他所有位置元素都为0;
np.identity(5)
逆矩阵
A为⽅阵,存在矩阵B使得AB=BA=I,I为单位矩阵,则称B为的逆矩阵;
对于Ax=b有
A = np.array([[2, 3], [4,5]])
A逆矩阵A_inv= np.linalg.inv( A )
I = A_inv.dot( A )
⾏列式
A = np.array([1 ,2 ],[4 ,5 ])
D = np.linalg.det(A)
范数
0范数 向量中⾮零元素个数
x = np.array([1, 0, -5])
n = (x, ord = 0)
1范数 向量中所有元素绝对值之和
x = np.array([3, 0, -4])
n1 = (x, ord = 1)
2范数 向量各个元素平⽅和求平⽅根
x = np.array([3, 0, -4])
n2 = (x, ord = 2)
矩阵的范数
1范数 ⼜称列范数,矩阵列向量中绝对值之和的最⼤值;
x = np.array([[-1, 1, 0],[-4, 3, 0],[1, 0, 1]])
n1 = (x, ord = 1)
2范数 ⼜称谱范数,A_t A 矩阵的最⼤特征值的开平⽅
a = np.array([[-2, 1, 1],[-4, 3, 0],[1, 0, 2]])
ata = np.matmul(a.T, a)
print ("lambda ", np.linalg.eigvals(ata))
n2 = (a, ord = 2)
print('norm_2 ', n2, np.sqrt(30.55403188))
F范数,Frobenius范数,计算⽅式为矩阵元素的绝对值的平⽅和再开⽅。x = np.array([[-1, 2, 0],[-4, 3, 0],[1, 0, 2]])
nfro = (x, ord = 'fro')
∞范数,⼜称⾏和范数, 即矩阵⾏向量中绝对值之和的最⼤值。
x = np.array([[-1, 2, 0],[-4, 3, 0],[1, 0, 2]])
ninf = (x, ord = np.inf)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论