python_(2)_矩阵运算

矩阵

m × n m \times n m×n 矩阵

[ 1 2 3 4 5 6 7 8 ] \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \\ 7 & 8 \end{bmatrix} 13572468

import numpy as np
A = np.array([[1,2],[3,4],[5,6],[7,8]])
print(A)
print(A.shape)
[[1 2]
 [3 4]
 [5 6]
 [7 8]]
(4, 2)

方阵

行数和列数相等的一类矩阵,称为方阵
阶数:行数或者列数

[ 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 ] \begin{bmatrix} 1 & 1 & 1 & 1 \\ 2 & 2 & 2 & 2 \\ 3 & 3 & 3 & 3 \\ 4 & 4 & 4 & 4 \\ \end{bmatrix} 1234123412341234

import numpy as np
A = np.array([[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4]])
print(A)
print(A.shape)
[[1 1 1 1]
 [2 2 2 2]
 [3 3 3 3]
 [4 4 4 4]]
(4, 4)

矩阵的转置

行和列上的元素进行位置互换,新矩阵称为原始矩阵的转置矩阵,记为 A T A^T AT

A = [ 1 2 3 4 5 6 7 8 ] A = \begin{bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \end{bmatrix} A=[15263748]

A T = [ 1 5 2 6 3 7 4 8 ] A^T = \begin{bmatrix} 1 & 5 \\ 2 & 6 \\ 3 & 7 \\ 4 & 8 \end{bmatrix} AT=12345678

import numpy as np
A = np.array([[1,2,3,4],[5,6,7,8]])
print("原始矩阵:")
print(A)
print("转置矩阵:")
print(A.T)
原始矩阵:
[[1 2 3 4]
 [5 6 7 8]]
转置矩阵:
[[1 5]
 [2 6]
 [3 7]
 [4 8]]

对称矩阵

原矩阵与转置后新矩阵相等,前置矩阵是方阵
S i j = S j i S_{ij}=S_{ji} Sij=Sji

A = [ 1 2 3 4 2 5 6 7 3 6 8 9 4 7 9 0 ] A = \begin{bmatrix} 1 & 2 & 3 & 4 \\ 2 & 5 & 6 & 7 \\ 3 & 6 & 8 & 9 \\ 4 & 7 & 9 & 0 \end{bmatrix} A=1234256736894790

A T ( 对 称 矩 阵 ) = [ 1 2 3 4 2 5 6 7 3 6 8 9 4 7 9 0 ] A^T(对称矩阵) = \begin{bmatrix} 1 & 2 & 3 & 4 \\ 2 & 5 & 6 & 7 \\ 3 & 6 & 8 & 9 \\ 4 & 7 & 9 & 0 \end{bmatrix} AT()=1234256736894790

import numpy as np
A = np.array([[1,2,3,4],[2,5,6,7],[3,6,8,9],[4,7,9,0]])
print("原始矩阵:")
print(A)
print("转置矩阵:")
print(A.T)
原始矩阵:
[[1 2 3 4]
 [2 5 6 7]
 [3 6 8 9]
 [4 7 9 0]]
转置矩阵:
[[1 2 3 4]
 [2 5 6 7]
 [3 6 8 9]
 [4 7 9 0]]

零矩阵 np.zeros()

所有元素都是0的矩阵
O = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] O = \begin{bmatrix} 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 \end{bmatrix} O=000000000000000

import numpy as np
A = np.zeros([5,3])
print(A)
print(A.shape)
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
(5, 3)

对角矩阵 np.diag()

非对角线位置上矩阵的元素全部都是0,这种矩阵称为对角矩阵
[ 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0 5 ] \begin{bmatrix} 1 & 0 & 0 & 0 & 0\\ 0 & 2 & 0 & 0 & 0\\ 0 & 0 & 3 & 0 & 0\\ 0 & 0 & 0 & 4 & 0\\ 0 & 0 & 0 & 0 & 5 \end{bmatrix} 1000002000003000004000005

import numpy as np
A = np.diag([1,2,3,4,5])
print(A)
print(A.shape)
[[1 0 0 0 0]
 [0 2 0 0 0]
 [0 0 3 0 0]
 [0 0 0 4 0]
 [0 0 0 0 5]]
(5, 5)

单位矩阵 np.eye()

指对角位置上的元素都是1,其余元素均是0的特殊矩阵
I = [ 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 ] I = \begin{bmatrix} 1 & 0 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 0 & 1 \end{bmatrix} I=1000001000001000001000001

import numpy as np
I = np.eye(5)
print(I)
print(I.shape)
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]
(5, 5)

矩阵的加法

参与计算的两个矩阵对应位置上的元素分别进行相加,才能得到最终结果的矩阵

[ 1 2 3 4 5 6 ] + [ 10 20 30 40 50 60 ] = [ 11 22 33 44 55 66 ] \begin{bmatrix} 1 & 2\\ 3 & 4\\ 5 & 6 \end{bmatrix} + \begin{bmatrix} 10 & 20\\ 30 & 40\\ 50 & 60 \end{bmatrix}= \begin{bmatrix} 11 & 22\\ 33 & 44\\ 55 & 66 \end{bmatrix} 135246+103050204060=113355224466

import numpy as np
A = np.array([[1,2],[3,4],[5,6]])
B = np.array([[10,20],[30,40],[50,60]])
print(A+B)
[[11 22]
 [33 44]
 [55 66]]

矩阵的数量乘法

参与运算的标量数字分别与矩阵的每一个元素相乘,得到结果矩阵对应的新元素
2 × [ 1 4 2 5 3 6 ] = [ 2 8 4 10 6 12 ] 2 \times \begin{bmatrix} 1 & 4\\ 2 & 5\\ 3 & 6 \end{bmatrix}= \begin{bmatrix} 2 & 8\\ 4 & 10\\ 6 & 12 \end{bmatrix} 2×123456=24681012

import numpy as np
A = np.array([[1,4],[2,5],[3,6]])
print(2*A)
[[ 2  8]
 [ 4 10]
 [ 6 12]]

矩阵与矩阵的乘法 np.dot()

[ 1 2 3 4 5 6 7 8 ] × [ 2 3 4 5 6 7 8 9 ] = [ 14 17 20 23 30 37 44 51 46 57 68 79 62 77 92 107 ] \begin{bmatrix} 1 & 2\\ 3 & 4\\ 5 & 6\\ 7 & 8 \end{bmatrix} \times \begin{bmatrix} 2 & 3 & 4 & 5\\ 6 & 7 & 8 & 9 \end{bmatrix}= \begin{bmatrix} 14 & 17 & 20 & 23\\ 30 & 37 & 44 & 51\\ 46 & 57 & 68 & 79\\ 62 & 77 & 92 & 107 \end{bmatrix} 13572468×[26374859]=143046621737577720446892235179107

import numpy as np
A = np.array([[1,2],[3,4],[5,6],[7,8]])
B = np.array([[2,3,4,5],[6,7,8,9]])
print(np.dot(A,B))
[[ 14  17  20  23]
 [ 30  37  44  51]
 [ 46  57  68  79]
 [ 62  77  92 107]]

矩阵乘以向量

矩阵的每行和列向量的对应元素分别相乘之后再进行相加
[ 1 2 3 4 5 6 ] [ 4 5 ] = [ 1 × 4 + 2 × 5 3 × 4 + 4 × 5 5 × 4 + 6 × 5 ] = [ 14 32 50 ] \begin{bmatrix} 1 & 2\\ 3 & 4 \\ 5 & 6 \end{bmatrix} \begin{bmatrix} 4\\ 5 \end{bmatrix}= \begin{bmatrix} 1\times4 + 2\times5\\ 3\times4 + 4\times5\\ 5\times4 + 6\times5\\ \end{bmatrix}= \begin{bmatrix} 14\\ 32\\ 50 \end{bmatrix} 135246[45]=1×4+2×53×4+4×55×4+6×5=143250

import numpy as np
A = np.array([[1,2],[3,4],[5,6]])
x = np.array([[4,5]]).T
print(np.dot(A,x))
[[14]
 [32]
 [50]]

求解线性方程组

{ x 1 + 2 x 2 + 3 x 3 = 14 x 1 − x 2 + 4 x 3 = 11 2 x 1 + 3 x 2 − x 3 = 5 \left\{\begin{aligned} x_1+2x_2+3x_3&=14\\ x_1-x_2+4x_3&=11\\ 2x_1+3x_2-x_3&=5 \end{aligned}\right. x1+2x2+3x3x1x2+4x32x1+3x2x3=14=11=5

import numpy as np
from scipy import linalg
A = np.array([[1,2,3],[1,-1,4],[2,3,-1]])
y = np.array([14,11,5])
x = linalg.solve(A,y)
print(x)
[1. 2. 3.]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值