正文共:3266 字 31 图 预计阅读时间: 9 分钟

本文目录:

  • 1. 前言

    • 1.1 基本介绍
    • 1.2 运行环境
  • 2. 函数清单
  • 3. 案例讲解
    • 3.1 Numpy.linalg
    • 3.2 Numpy.matlib

1.前言

1.1 基本介绍

NumPy 是Python数据分析必不可少的第三方库,NumPy 的出现一定程度上解决了Python运算性能不佳的问题,同时提供了更加精确的数据类型。如今,NumPy 被Python其它科学计算包作为基础包,已成为 Python 数据分析的基础,可以说 NumPy 就是SciPy、Pandas等数据处理或科学计算库最基本的函数功能库。

数据挖掘的理论背后,几乎离不开线性代数的计算,如矩阵乘法、矩阵分解、行列式求解等。本文将介绍 NumPy(目前最新版本为 1.16) 中与线性代数相关的模块的使用方法,包括 numpy.linalg , numpy.matlib 。

Numpy : https://docs.scipy.org/doc/numpy/reference/routines.html

numpy.linalg : https://docs.scipy.org/doc/numpy/reference/routines.linalg.html

numpy.matlib : https://docs.scipy.org/doc/numpy/reference/routines.matlib.html

numpy.dual : https://docs.scipy.org/doc/numpy/reference/routines.dual.html

numpy.fft : https://docs.scipy.org/doc/numpy/reference/routines.fft.html

(numpy.dual主要是利用scipy加速运算,用法与linalg和matlib中方法类似,这里不再多做介绍,numpy.fft涉及应用层面,限于篇幅,暂时不做扩展)

1.2 运行环境

  • 操作系统: win10
  • python版本:3.7.0
  • IPython版本:6.5.0
  • numpy版本 :1.15.1

2.函数清单

国际惯例,引入 NumPy 使用别名 np ,所有函数清单,方便速查。另外在 Numpy 中一维数组表示向量,多维数组表示矩阵。

Linear algebra (numpy.linalg)

线性代数模块

Matrix and vector products

矩阵相乘

dot(a, b[, out])

向量或者矩阵乘积

linalg.multi_dot(arrays)

多个矩阵的乘积

vdot(a, b)

仅适用于向量内积

inner(a, b)

内积( 对于两个二维数组的inner,相当于按X和Y的最后顺序的轴方向上取向量 ,然后依次计算内积后组成的多维数组)

outer(a, b[, out])

向量外积

matmul(x1, x2, /[, out, casting, order, …])

矩阵乘积

linalg.matrix_power(a, n)

矩阵乘幂

Decompositions

矩阵分解

linalg.qr(a[, mode])

矩阵的QR分解

linalg.svd(a[, full_matrices, compute_uv])

SVD分解

Matrix eigenvalues

特征值和特征向量

linalg.eig(a)

特征值和特征向量(方阵)

linalg.eigvals(a)

特征值(方阵)

Norms and other numbers

范数等

linalg.norm(x[, ord, axis, keepdims])

向量或者矩阵的范数

linalg.det(a)

行列式的值

linalg.matrix_rank(M[, tol, hermitian])

使用SVD分解得到矩阵的秩

trace(a[, offset, axis1, axis2, dtype, out])

Solving equations and inverting matrices

解线性方程组和逆

linalg.solve(a, b)

解线性方程组的准确解(要求满秩)

linalg.tensorsolve(a, b[, axes])

解Ax=b

linalg.lstsq(a, b[, rcond])

最小二乘

linalg.inv(a)

矩阵的逆

linalg.pinv(a[, rcond])

伪逆

Matrix library (numpy.matlib)

矩阵模块

mat(data[, dtype])

矩阵类型

matrix(data[, dtype, copy])

矩阵类型

asmatrix(data[, dtype])

将输入转化为矩阵类型

bmat(obj[, ldict, gdict])

块矩阵构造

empty(shape[, dtype, order])

只记录形状的空矩阵

zeros(shape[, dtype, order])

全0矩阵

ones(shape[, dtype, order])

全1矩阵

matlib.eye(n[, M, k, dtype, order])

产生对角线元素为1,其余元素为0的矩阵。 n 行数 M列数 k 对角元相对主对角线的位置 (可以产生长矩阵)

identity(n[, dtype])

单位阵

matlib.repmat(a, m, n)

向量或矩阵(最高只支持到2维)列方向重复m次,行方向重复n次

matlib.rand(*args)

填充随机数的矩阵

matlib.randn(*args)

填充数符合标准正态分布的矩阵

3.案例讲解

3.1 numpy.linalg 模块

  • 模块引入以及取别名
1import numpy as np
2import numpy.linalg as linalg
  • 向量或矩阵乘积

  • 多矩阵的乘积

相对于矩阵之间两两乘积,多矩阵的时候使用 multi_dot() 更加便捷

  • 向量内积

只适用于向量,如果为矩阵则结果不为矩阵的内积

  • 内积

# 对于两个二维数组的inner,相当于按X和Y的最后顺序的轴方向上取向量

# 然后依次计算内积后组成的多维数组

  • 矩阵乘幂

这里使用第二十四讲的马尔科夫矩阵

(这里基本上已经可以确定稳态了)

  • QR分解

这里使用第十七讲习题课的矩阵,可以发现和我们之前计算的 QR 结果是一致的,只不过有符号的差别。

  • SVD分解

这里使用第三十讲奇异值分解习题课的例子

  • 方阵的特征值和特征向量

这里使用第二十一讲习题课的例子

(可以发现结果都对特征向量进行了标准化)

  • 特征值

该方法只返回特征值

  • 范数

默认是二阶范数

  • 行列式的值

可以单独求解单个矩阵的行列式的值,也可以多个矩阵同时求解行列式的值

  • 矩阵的秩

同样支持多个矩阵同时求解矩阵的秩

  • 矩阵的迹

  • 解线性方程组

使用第二讲矩阵消元习题的例子,该方法要求满秩,即系数矩阵为方阵且各列线性无关。

  • 矩阵形式求解线性方程组 (Ax=b)

使用第二讲矩阵消元习题的例子,该方法同样要求满秩,即系数矩阵为方阵且各列线性无关。

  • 最小二乘

使用第十六讲习题课的例子,返回值中含有多个值,系数矩阵在返回值的第一个数组中

使用第三讲课程内容中的例子

  • 伪逆

使用第三十四讲习题课的例子,这里要求输入为方阵,因此使用该例子,我们将原矩阵补全为方阵

3.2 numpy.matlib 模块

  • 矩阵类型

  • 将其他类型转化为矩阵类型

  • 块矩阵构造

  • 空矩阵

默认会填充随机值(应该是占位用的)

  • 全 0 矩阵

  • 全 1 矩阵

  • 对角线为 1 矩阵

这里可以不止是在主对角线上,可由参数k控制,该参数定义全为 1 的对角线离主对角线的相对距离,为正则往上三角移动,为负则往下三角移动。 并且可以是非方阵。三个参数分别对应行数,列数和相对位置

  • 单位阵

  • 随机数矩阵

  • 随机数符合标准正态分布的矩阵

原文发布于微信公众号 - 零维领域(lingweilingyu)

利用 Numpy 进行矩阵相关运算相关推荐

  1. python np array归一化_浅谈利用numpy对矩阵进行归一化处理的方法

    浅谈利用numpy对矩阵进行归一化处理的方法 本文不讲归一化原理,只介绍实现(事实上看了代码就会懂原理),代码如下: def Normalize(data): m = np.mean(data) mx ...

  2. Python之数据分析(Numpy的矩阵相关操作、ufunc泛化函数对象)

    文章目录 一.矩阵相关操作 二.ufunc统一泛化函数 一.矩阵相关操作 1.三种构造矩阵的方法 np.matrix(二维容器, copy=True) 一参为可被解释为矩阵的二维容器,比如二维数组.二 ...

  3. MATLAB矩阵相关运算

    MATLAB矩阵合并及相关运算 1.matlab允许向量(和矩阵)合并,且matlab提供了两种合并方式,[a,b]和[a;b],两者的结果是不一样的. a=rand(2,3): b=rand(2,3 ...

  4. python计算相关矩阵_Numpy使用大全(python矩阵相关运算大全)-Python数据分析基础2...

    //2019.07.10 python数据分析基础--numpy(数据结构基础) import numpy as np: 1.python数据分析主要的功能实现模块包含以下六个方面: (1)numpy ...

  5. 利用numpy对矩阵进行归一化处理的方法

    本文不讲归一化原理,只介绍实现(事实上看了代码就会懂原理),代码如下: def Normalize(data):m = np.mean(data)mx = max(data)mn = min(data ...

  6. numpy中向量和矩阵相关乘法总结

    numpy中矩阵相关乘法总结 一.numpy中向量和矩阵的概念 向量:1维 矩阵:至少是2维 注意:numpy中对于向量的定义与数学中对向量的定义有些不同,数学中对向量的定义是竖向写法,但由于nump ...

  7. python矩阵运算实例_Python矩阵常见运算操作实例总结 python 怎么实现矩阵运算

    python 怎么查看一个矩阵的维数你是知道的,等你,我已经栖息了疲惫的憧憬,夜夜抚慰残梦的翅膀. 都是复制党,百度知道回答真的质量太低了,真的很心疼,言归正传 利用numpy分享矩阵维数: impo ...

  8. 利用R与NumPy实现矩阵乘法

    利用R与NumPy实现矩阵乘法 一.R矩阵乘法 1.A*B--逐项相乘 2.A%*%B--矩阵相乘 3.crossprod(A, B)--A'%*%B(A':A的转置矩阵)--交叉相乘 二.NumPy ...

  9. Python中利用numpy将数组(矩阵)存成csv文件,将csv文件读取为数组(矩阵)

    Python中利用numpy将数组(矩阵)存成csv文件,将csv文件读取为数组(矩阵) 本博客转载自:https://blog.csdn.net/vernice/article/details/50 ...

最新文章

  1. php如何查找业务bug,一般从php网站找bug怎么开始
  2. R语言:怎么进行异常检测
  3. [Leetcode] Permutations 全排列
  4. 成功使用Windows Live Writer 2010发布日志
  5. “老师,我不要苹果味的,我要葡萄味的”!
  6. 《朝花夕拾》金句摘抄(五)
  7. 银泰上云 打造“从-1到0再到1”数字化成长逻辑
  8. 自己动手构造编译系统:编译、汇编与链接2.1.4 语义分析
  9. python多个判断条件体重_python基础之如何用if语句判断多个条件?
  10. dell戴尔服务器错误代码及解决方案2013版
  11. placeholder—Jquery插件placeholder的使用方法
  12. HALCON示例程序IC.hdev通过电路板元器件定位识别
  13. 股票学习-量柱和k线-第六天
  14. 数值优化学习十八——SQP
  15. 【Scala】9、Trait、Match、CaseClass和偏函数
  16. 1.1 windows环境安装Perl
  17. docker 使用tar安装mysql_使用docker安装mysql服务
  18. linux内核编程13期:内存管理
  19. 全球3D打印机行业一流服务品牌
  20. Python 定时发送【每日天气】和【每日简报】至【邮件】或【钉钉】(代码部署在云服务器)

热门文章

  1. jQuery操作input改变value属性值
  2. Oracke nls Parameters
  3. 随机森林算法4种实现方法对比测试:DolphinDB速度最快,XGBoost表现最差
  4. 尾递归调用 高阶函数 map filter reduce
  5. setTimeout 定时器的使用
  6. 应用Mongoose开发MongoDB(2)模型(models)
  7. hdu 5199 Gunner(STL之map,水)
  8. c语言,字符串原地翻转
  9. SQL语句行列转换两种方法 case ...when 和pivot函数应用
  10. Lync Server 2010的部署系列(四) outlook无法加入联机会议