Numpy库学习——线性代数及相关运算
来源:互联网 发布:刺客信条2优化怎么样 编辑:程序博客网 时间:2024/06/04 23:30
在机器学习和深度学习的Python编程过程中,因为运行速度的要求,通常建议进行向量化。在向量化表达式后,会涉及大量的线性代数运算,尤其是矩阵之间的乘积运算。下面将会着重介绍Numpy库中的线性代数运算。
在对线性代数运算介绍之前,需要区分array数组和matrix矩阵之间的差异,以便为后续
在不同情况下完成相同的线性代数运算提供基础。
(一)array数组和Matrix矩阵的区别
对于多维数组(ndarray类)的运算,Numpy默认不采用矩阵运算,即默认不把对应数组当做矩阵看待。如果希望对数组进行矩阵运算,可以通过调用相应的函数来实现。ndarray类创建的数组对象可以是1维、2维、3维....N维。在numpy里面arrays遵从逐个元素的运算,这一点与矩阵运算相差较大,如下面示例:
参考:http://blog.csdn.net/vincentlipan/article/details/20717163
对于Numpy提供的matrix类,其创建的对象为矩阵对象,且总是二维的。Matrix类型继承于ndarray类型,因此含有ndarray的所有数据属性和方法。对Matrix所创建的对象的加减乘除运算默认采用矩阵方式计算。在NumPy里,“mat”是“matrix”的一个别名。
1)可以利用np.mat()函数将ndarray数组对象转换为matrix矩阵对象,如下所示
参考:http://blog.csdn.net/shuaishuai3409/article/details/50830196
2)也可以使用np.asmatrix()
和np.asarray()
函数实现相互转换
参考:http://blog.csdn.net/vincentlipan/article/details/20717163
注:为了避免不必要的麻烦,在实际应用中可以考虑仅用ndarray数组,并调用相关的函数执行矩阵运算,这样即可以减少不必要的麻烦!!
(二)常见的矩阵运算
假设A、B为ndarray数组对象,C、D为matrix矩阵对象,那么A和B对应的相关矩阵运算方式如下表所示。
import numpy as np
乘积np.dot(A,B)C*DC和D均为矩阵共轭转置
C.H
求迹np.trace(A)
参考:http://www.cnblogs.com/fnight/p/5763479.html
http://www.cnblogs.com/hanahimi/p/4340767.html
(1)求逆
--对ndarray数组对象求逆
可以采用np.linalg.inv()函数来求取,如下图所示,即
--对matrix矩阵对象求逆
(2)转置
对于ndarray数组对象和matrix矩阵对象的转置都可以采用“A.T”的方式,如下图示例,即
(3)乘积
(4)求迹
- Numpy库学习——线性代数及相关运算
- Numpy基础教程 — 线性代数
- MKL学习——线性代数概念相关
- 线性代数的学习及相关资源
- NumPy学习笔记3-线性代数
- Numpy学习笔记之线性代数
- 线性代数——基本运算
- numpy矩阵相关和线性代数linalg模块
- Eigen——线性代数运算的C++模板库
- numpy-线性代数
- numpy线性代数
- 线性代数复习二——矩阵运算
- numpy基础教程—算术运算
- 深度学习之二——相关数学基础(线性代数理论)
- Numpy学习笔记——Numpy基础
- Numpy学习笔记——NumPy模块
- Java编程——Calendar类学习及相关日期运算
- Tensor数据相关的运算、函数讲解及与numpy区别
- Dynamic loading in embedded sytem
- 迭代器、生成器
- 十个值得一试的开源深度学习框架
- palindrome-partitioning Java code
- Android architecture component架构
- Numpy库学习——线性代数及相关运算
- C++中的引用和指针的区别
- function power
- @RequestMapping 用法详解之地址映射 含 参数绑定(@RequestParam、 @RequestBody、 @RequestHeader 、 @PathVariable)
- 习题3.2
- Android architecture component架构集成
- 战斗流程设计杂谈
- Linux的初体验
- 尽量避免双Key系统