在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)

Python与线性代数基本概念的更多相关文章

  1. Python学习:基本概念

    Python学习:基本概念 一,python的特点: 1,python应用场景多;爬虫,网站,数据挖掘,可视化演示. 2,python运行速度慢,但如果CPU够强,这差距并不明显. 3,严格的缩进式编 ...

  2. python面向对象编程 -- 基本概念

    面向对象的编程简要概括就是将要处理的问题抽象为数据和操作的集合,用类对其进行封装.其中数据和操作都称为类的属性,它们是一般是不变的. 对类进行实例化生成我们所说的对象,对象有自己的属性.对象的属性一般 ...

  3. python 中面向对象的概念

    原文 域和作用空间 本地域,函数域(nonlocal)和 全局域(global) def scope_test(): def do_local(): spam = "local spam&q ...

  4. Python错误和异常概念(总)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6435956.html 本文出自:[Edwin博客园] Python错误和异常概念(总) 1. 错误和异常的处 ...

  5. 『Python题库 - 简答题』 Python中的基本概念 (121道)

    ## 『Python题库 - 简答题』 Python中的基本概念 1. Python和Java.PHP.C.C#.C++等其他语言的对比? 2. 简述解释型和编译型编程语言? 3. 代码中要修改不可变 ...

  6. 利用Python学习线性代数 -- 1.1 线性方程组

    利用Python学习线性代数 -- 1.1 线性方程组 本节实现的主要功能函数,在源码文件linear_system中,后续章节将作为基本功能调用. 线性方程 线性方程组由一个或多个线性方程组成,如 ...

  7. python里类的概念

    Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...

  8. 用 python 解决线性代数中的矩阵运算

    用 python 解决线性代数中的矩阵运算 矩阵叉乘 矩阵求逆 矩阵转置 假定AX=B,求解未知矩阵X 矩阵的行列式值|matrix| 未完待续..... import sys from PyQt5. ...

  9. python基础整理----基本概念和知识

    整理一下python的基本概念和知识, 主要用python3为语法标准. python介绍 一种面向对象的解释性计算机设计语言,具有丰富和强大的库. python定位:"优雅".& ...

随机推荐

  1. 手把手带你一键部署 Kubernetes + KubeSphere 至 Linux

    本文介绍一个最快安装 Kubernetes 和体验 KubeSphere 核心功能的方式,all-in-one 模式可一键安装 Kubernetes v1.15.5 和 KubeSphere 至一台 ...

  2. TypeScript SDK 和 REST API

    在本文中,我们将讨论CUBA平台中已经存在很长时间的一个功能,但是很多人还不知道,这就是前端SDK生成器,并了解它如何与CUBA的REST API插件一起使用. Java+JavaScript - 在 ...

  3. 继上篇-jquery ajax提交 本篇用ajax提交的数据去数据库查询

    上篇讲到如何用jquery ajax提交数据至后台,后台接收并返回给ajax.https://www.cnblogs.com/tiezhuxiong/p/11943328.html 今天我们把数据传到 ...

  4. EntityFramework Core 3.0查询

    前言 随着.NET Core 3.0的发布,EF Core 3.0也随之正式发布,关于这一块最近一段时间也没太多去关注,陆续会去对比之前版本有什么变化没有,本节我们来看下两个查询. 分组 我们知道在E ...

  5. 小白学 Python 爬虫(9):爬虫基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  6. EntityFramework Core 3多次Include导致查询性能低之解决方案

    前言 上述我们简单讲解了几个小问题,这节我们再来看看如标题EF Core中多次Include导致出现性能的问题,废话少说,直接开门见山. EntityFramework Core 3多次Include ...

  7. __dict__和dir()的区别

    __dict__和dir()的区别 dir() 一般用来查看模块的属性 __dict__从某方面上来说是dir()的子集 可以直接打印dir(),显示的是当前执行文件所有的属性 __dict__ __ ...

  8. 对Java单例模式 volatile关键字作用的理解

    单例模式是程序设计中经常用到的,简单便捷的设计模式,也是很多程序猿对设计模式入门的第一节课.其中最经典的一种写法是: class Singleton { private volatile static ...

  9. 使用Spring Data JPA的Specification构建数据库查询

    Spring Data JPA最为优秀的特性就是可以通过自定义方法名称生成查询来轻松创建查询SQL.Spring Data JPA提供了一个Repository编程模型,最简单的方式就是通过扩展Jpa ...

  10. 关于SQL Server 中日期格式化若干问题

    select CONVERT(varchar, getdate(), 120 )2004-09-12 11:06:08 select replace(replace(replace(CONVERT(v ...