Python中numpy.linalg库常用函数
Python中numpy.linalg库常用函数
numpy.linalg
- Python中numpy.linalg库常用函数
- 简单记录所遇到的numpy库内置函数
- 矩阵与向量积
- ①np.linalg.dot() 两组数组的点积
- ②numpy.vdot(a,b) 返回两个向量的点积
- ③np.inner(a,b) np.outer(a,b) 计算向量或矩阵的内积 外积
- ④numpy.matmul() 计算矩阵的乘积
- 矩阵规范
- ①np.linalg.inv() 求矩阵A的逆
- ②np.linalg.eigvals() 求特征值
- ③np.linalg.det() 求行列式
- ④np.linalg.norm() 求范数
- ⑤numpy.linalg.slogdet(a) 计算行列式的符号和自然对数
简单记录所遇到的numpy库内置函数
########################线性代数部分######################
numpy.linalg模块包含了线性代数有关函数,使用这个模块,可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等。
矩阵与向量积
①np.linalg.dot() 两组数组的点积
如果a和b都是一维数组,则它是向量的内积(无复共轭)
如果a和b均为二维数组,则为矩阵乘法
import numpy as np
a=np.dot(3, 4)
b = [[1, 0], [0, 1]]
c = [[4, 1], [2, 2]]
A=np.dot(a, b)
print(a,A)
运行结果:
12 [[12 0][ 0 12]]
②numpy.vdot(a,b) 返回两个向量的点积
如果第一个参数是复数,则使用第一个参数的共轭复数来计算点积。
输出a和b的点积。根据a和b的类型,可以是int,float或complex 。
import numpy as np
a = np.array([1+2j,3+4j])
b = np.array([5+6j,7+8j])
print(np.vdot(a, b))
print(np.vdot(b, a))x = np.array([[1, 4], [5, 6]])
y = np.array([[4, 1], [2, 2]])
print(np.vdot(x, y))
print(np.vdot(y, x))
运行结果:
(70-8j)
(70+8j)
30
30
③np.inner(a,b) np.outer(a,b) 计算向量或矩阵的内积 外积
import numpy as np
a = np.array([1,2,3])
b = np.array([0,1,0])
print(np.inner(a, b))
print(np.outer(a, b))
计算结果:
2
[[0 1 0][0 2 0][0 3 0]]
④numpy.matmul() 计算矩阵的乘积
形式:
numpy.matmul(x1, x2, /, out=None, *)
x1、x2:不允许是数组或者标量
out:存储结果的位置,一般无需设置
:其他关键字
与dot有两点区别:
1、不允许使用标量乘法,使用代替。
2、Stacks of matrices are broadcast together as if the matrices were elements, respecting the signature (n,k),(k,m)->(n,m): (很难直译)
import numpy as np
a = np.ones([9, 5, 7, 4])
c = np.ones([9, 5, 4, 3])
print(np.dot(a, c).shape)
print(np.matmul(a, c).shape)
运行结果:
(9, 5, 7, 9, 5, 3)
(9, 5, 7, 3)
矩阵规范
①np.linalg.inv() 求矩阵A的逆
A必须为方阵,且此函数可以同时求多个矩阵的逆
import numpy as np
a = np.array([[[1., 2.], [3., 4.]], [[1, 3], [3, 5]]])
B=np.linalg.inv(a)
print(a)
print(B)
运行结果:
[[[1. 2.][3. 4.]][[1. 3.][3. 5.]]]
[[[-2. 1. ][ 1.5 -0.5 ]][[-1.25 0.75][ 0.75 -0.25]]]
②np.linalg.eigvals() 求特征值
计算特征值但是不返回特征值。而eig函数可以返回一个包含特征值和对应的特征向量的元组
from numpy import linalg as LA
import numpy as np
D = np.diag((-1,1))
print(LA.eigvals(D))
运行结果:
[-1. 1.]
③np.linalg.det() 求行列式
可以同时求多个矩阵的求行列式,返回一个数组
import numpy as np
a = np.array([ [[1, 2], [3, 4]], [[1, 2], [2, 1]], [[1, 3], [3, 1]] ])
print(a.shape)
b=np.linalg.det(a)
print(b)
运行结果:
(3, 2, 2)
[-2. -3. -8.]
④np.linalg.norm() 求范数
np.linalg.norm(x,order=None,axis=None,keepdims=False)
order为范数类型,默认二范数;
axis处理类型,axis=1表示按行向量处理,求多个行向量的范数axis=0表示按列向量处理,求多个列向量的范数,axis=None表示矩阵范数;
keepdims bool类型,是否保持矩阵的二维特性。
import numpy as np
a = np.array([[1, 2, 10, 15, 8]])
b=np.linalg.norm(a)
print(b)
运行结果:
19.849433241279208
⑤numpy.linalg.slogdet(a) 计算行列式的符号和自然对数
如果数组具有非常大或者非常小的行列式,使用det会导致溢出,slogdet返回的是自然对数。
a:必须为一个二维方阵
返回值sign:表示行列式符号的一个数。对于实矩阵,这是1 0或-1。
返回值logdet:行列式的绝对值的自然对数。
import numpy as np
a = np.array([ [[1, 2], [3, 4]], [[1, 2], [2, 1]], [[1, 3], [3, 1]] ])
print(a)
print(a.shape)
sign, logdet = np.linalg.slogdet(a)
print(sign, logdet)
b=sign * np.exp(logdet)
print(b)
运行结果:
[[[1 2][3 4]][[1 2][2 1]][[1 3][3 1]]]
(3, 2, 2)
[-1. -1. -1.] [0.6931 1.0986 2.0794]
[-2. -3. -8.]
Python中numpy.linalg库常用函数相关推荐
- Python中处理字符串的常用函数汇总【文末送书】
正式的Python专栏第23篇,同学站住,别错过这个从0开始的文章! 今天我们说了字符串的基础,格式化,这次我们讲解字符串的常用函数,不要错过! (文本送书,评论区抽取一位送书) 前两篇都在本文同个专 ...
- python中math计算平方根的函数_Python中Numpy和Math常用函数性能对比
numpy是如今数据分析领域离不开的Python第三方工具库,它和Python自带的math库中都有一些基础的数学函数,比如指数.对数.三角函数等.在需要使用这些函数的时候,到底该用numpy还是ma ...
- python求极限函数_SymPy库常用函数
标签: 简介 SymPy是一个符号计算的Python库.它的目标是成为一个全功能的计算机代数系统,同时保持代码简 洁.易于理解和扩展.它完全由Python写成,不依赖于外部库.SymPy支持符号计算. ...
- 学习笔记27—python中numpy.ravel() 和 flatten()函数
简介 首先声明两者所要实现的功能是一致的(将多维数组降位一维).这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平).两者的区别在于返回拷贝(copy)还是返回视图(vie ...
- [转载] python中numpy库的使用举例
参考链接: Python Numpy 1.矩阵的创建 1.1 利用np.array()创建一个矩阵,注意array()里面是一个python列表或者元组 1.2 利用np.zeros()创建矩阵 1. ...
- python中numpy.random.gamma()函数
python中numpy.random.gamma()函数 根据官网,地址如下: https://www.w3cschool.cn/doc_numpy_1_11/numpy_1_11-generate ...
- python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数返回浮点数
python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点 ...
- python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数默认返回浮点数
python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点数 目录
- Python中numpy.power()函数介绍
Python中numpy.power()函数介绍 power(x, y) 函数,计算 x 的 y 次方. 示例: x 和 y 为单个数字: import numpy as npprint(np.pow ...
最新文章
- C#项目中关于多个程序集下App.config文件的问题
- python小项目案例-python_flask小项目实例-编一个小网站
- Android 抓包的一些命令 及 adb使用的一些注意事项
- 分类测试以减少构建时间
- noip模拟赛 都市
- Android通过tcpdump抓包
- python3基础学习(XML文件解析)
- 32获取外部中断状态_选中断还是轮询方式?深究其中的区别
- 数论入门基础(同余定理/费马小定理/扩展欧几里德算法/中国剩余定理)~
- C++学习足迹---(纯DOS版)五子棋
- 数据中心基础设施运维有哪些项目?哪些系统?如何实施?
- java坦克类的设计_纯JAVA坦克大战,可以做毕业设计
- 如何把pacs系统移到新服务器,PACS系统数据管理迁移解决方案(8页)-原创力文档...
- 【区块链之技术进阶】Attention please!区块链技术的风险!
- 计算机类博士多少年,弗吉尼亚大学博士几年?
- 6.xp 开机画面【欢迎使用】四个字更改方法:
- 基于服务器端的三维渲染技术
- 从零开始学习主成分分析
- matlab tikz,TeX系列: matlab2tikz--matlab图形数据转化为tikz命令
- 【聆思CSK6视觉AI开发套件试用】AI手势检测识别+编译Helloworld示例