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库常用函数相关推荐

  1. Python中处理字符串的常用函数汇总【文末送书】

    正式的Python专栏第23篇,同学站住,别错过这个从0开始的文章! 今天我们说了字符串的基础,格式化,这次我们讲解字符串的常用函数,不要错过! (文本送书,评论区抽取一位送书) 前两篇都在本文同个专 ...

  2. python中math计算平方根的函数_Python中Numpy和Math常用函数性能对比

    numpy是如今数据分析领域离不开的Python第三方工具库,它和Python自带的math库中都有一些基础的数学函数,比如指数.对数.三角函数等.在需要使用这些函数的时候,到底该用numpy还是ma ...

  3. python求极限函数_SymPy库常用函数

    标签: 简介 SymPy是一个符号计算的Python库.它的目标是成为一个全功能的计算机代数系统,同时保持代码简 洁.易于理解和扩展.它完全由Python写成,不依赖于外部库.SymPy支持符号计算. ...

  4. 学习笔记27—python中numpy.ravel() 和 flatten()函数

    简介 首先声明两者所要实现的功能是一致的(将多维数组降位一维).这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平).两者的区别在于返回拷贝(copy)还是返回视图(vie ...

  5. [转载] python中numpy库的使用举例

    参考链接: Python Numpy 1.矩阵的创建 1.1 利用np.array()创建一个矩阵,注意array()里面是一个python列表或者元组 1.2 利用np.zeros()创建矩阵 1. ...

  6. python中numpy.random.gamma()函数

    python中numpy.random.gamma()函数 根据官网,地址如下: https://www.w3cschool.cn/doc_numpy_1_11/numpy_1_11-generate ...

  7. python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数返回浮点数

    python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点 ...

  8. python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数默认返回浮点数

    python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点数 目录

  9. Python中numpy.power()函数介绍

    Python中numpy.power()函数介绍 power(x, y) 函数,计算 x 的 y 次方. 示例: x 和 y 为单个数字: import numpy as npprint(np.pow ...

最新文章

  1. C#项目中关于多个程序集下App.config文件的问题
  2. python小项目案例-python_flask小项目实例-编一个小网站
  3. Android 抓包的一些命令 及 adb使用的一些注意事项
  4. 分类测试以减少构建时间
  5. noip模拟赛 都市
  6. Android通过tcpdump抓包
  7. python3基础学习(XML文件解析)
  8. 32获取外部中断状态_选中断还是轮询方式?深究其中的区别
  9. 数论入门基础(同余定理/费马小定理/扩展欧几里德算法/中国剩余定理)~
  10. C++学习足迹---(纯DOS版)五子棋
  11. 数据中心基础设施运维有哪些项目?哪些系统?如何实施?
  12. java坦克类的设计_纯JAVA坦克大战,可以做毕业设计
  13. 如何把pacs系统移到新服务器,PACS系统数据管理迁移解决方案(8页)-原创力文档...
  14. 【区块链之技术进阶】Attention please!区块链技术的风险!
  15. 计算机类博士多少年,弗吉尼亚大学博士几年?
  16. 6.xp 开机画面【欢迎使用】四个字更改方法:
  17. 基于服务器端的三维渲染技术
  18. 从零开始学习主成分分析
  19. matlab tikz,TeX系列: matlab2tikz--matlab图形数据转化为tikz命令
  20. 【聆思CSK6视觉AI开发套件试用】AI手势检测识别+编译Helloworld示例

热门文章

  1. 【克罗地亚VS巴西】和【荷兰VS阿根廷】足球的魅力
  2. [IOS APP]慧悟禅故事-有声小说
  3. 2022跨境出海:中东电商市场现状及发展前景
  4. 可视化大屏项目:学生就业统计展示
  5. 【学习笔记】在线双序列比对工具
  6. markdown转图片
  7. 腾讯一面直接扑街,等我回头继续再战
  8. 大数据和云计算技术周报(第67期)
  9. win10装linux虚拟机contos,利用win10自带虚拟机hyper-v安装centos7方法详解
  10. Mweb发布blog到各博客平台