在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

转置

行向量可转置为列向量,列向量转置为行向量

如为方阵转置后行数列数不变,对于非方阵,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 = np.linalg.norm(x, ord = 0)

1范数 向量中所有元素绝对值之和

 x = np.array([3, 0, -4])
n1 = np.linalg.norm(x, ord = 1)

2范数 向量各个元素平方和求平凡根

 x = np.array([3, 0, -4])
n2 = np.linalg.norm(x, ord = 2)

矩阵的范数

1范数 又称列范数,矩阵列向量中绝对值之和的最大值;

 x = np.array([[-1, 1, 0],[-4, 3, 0],[1, 0, 1]])
n1 = np.linalg.norm(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 = np.linalg.norm(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 = np.linalg.norm(x, ord = 'fro')

∞范数,又称行和范数, 即矩阵行向量中绝对值之和的最大值。

 x = np.array([[-1, 2, 0],[-4, 3, 0],[1, 0, 2]])
ninf = np.linalg.norm(x, ord = np.inf)

最新文章

  1. Linux CentOS 配置JDK环境
  2. Swift语法简介(一)
  3. Delphi中限制文本框(TEdit)只能输入数字
  4. AJAX 跨域请求 - JSONP获取JSON数据
  5. null和undefined
  6. 类或方法名后加<>
  7. 解决li在ie,firefox中行高不一致问题
  8. trigger()的event事件对象之坑
  9. [转]CSS 模块
  10. 【CF】207 Div.1 B.Xenia and Hamming
  11. ListView列表项
  12. 使用SLT 工具从SAP导入数据到SAP HANA的监控
  13. Redis使用记录-相关资料汇总
  14. Struts框架2
  15. DRF 商城项目 - 购物( 购物车, 订单, 支付 )逻辑梳理
  16. 创建ajax的步骤
  17. Oracle数据库自带表空间的详细说明
  18. [No000018C]Vim清除上次的搜索高亮结果-Vim使用技巧(1)
  19. AngularJS的简单入门
  20. fb 4.7英文版 修改字体大小

热门文章

  1. 【Linux系列】配置Centos 7的软件源(二)
  2. 【论文阅读】Deep Mutual Learning
  3. 使用Query Store监控性能
  4. Linux(CentOS7)修改默认yum源为国内的阿里云、网易yum源
  5. Linux发展史及安装
  6. Vue组件通信之非父子组件传值
  7. 【数据结构】之栈(C语言描述)
  8. Day01-变量/常量/数据类型/流程控制之 if
  9. NSURLSession的用法
  10. 能避开很多坑的mysql面试题,你知道吗?