numpy基础--线性代数
以下代码的前提:import numpy as np
线性代数(如矩阵乘法、矩阵分解、行列式以及其他方阵数学等)是任何数组库的重要组成部分。numpy提供了一个用于矩阵乘法的dot函数(既是一个数组方法也是numpy命名空间中的一个函数)。
矩阵乘法官方说明:numpy.dot — NumPy v1.21 Manual
1 >>> x = np.array([[1, 2, 3], [4, 5, 6]])
2 >>> y = np.array([[1, 2], [3, 4], [5, 6]])
3 >>> x
4 array([[1, 2, 3],
5 [4, 5, 6]])
6 >>> y
7 array([[1, 2],
8 [3, 4],
9 [5, 6]])
10 >>> np.dot(x, y)
11 array([[22, 28],
12 [49, 64]])
13 >>> x.dot(y)
14 array([[22, 28],
15 [49, 64]])
16 >>>
numpy.linalg中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西。
1 >>> from numpy.linalg import inv, qr
2 >>> X = np.arange(9).reshape(3, 3)
3 >>> X
4 array([[0, 1, 2],
5 [3, 4, 5],
6 [6, 7, 8]])
7 >>> mat = X.T.dot(X)
8 >>> mat
9 array([[45, 54, 63],
10 [54, 66, 78],
11 [63, 78, 93]])
12 >>> inv(mat)
13 array([[ 3.51843721e+13, -7.03687442e+13, 3.51843721e+13],
14 [-7.03687442e+13, 1.40737488e+14, -7.03687442e+13],
15 [ 3.51843721e+13, -7.03687442e+13, 3.51843721e+13]])
16 >>> mat.dot(inv(mat))
17 array([[ 0.79296875, 1. , -0.2109375 ],
18 [ 0.1484375 , 1. , -0.046875 ],
19 [-0.74609375, 1. , 0.6171875 ]])
20 >>> q, r = qr(mat)
21 >>> q
22 array([[-0.47673129, 0.77849894, 0.40824829],
23 [-0.57207755, 0.07784989, -0.81649658],
24 [-0.66742381, -0.62279916, 0.40824829]])
25 >>> r
26 array([[-9.43927963e+01, -1.15559666e+02, -1.36726535e+02],
27 [ 0.00000000e+00, -1.40129810e+00, -2.80259620e+00],
28 [ 0.00000000e+00, 0.00000000e+00, 3.55271368e-15]])
29 >>>
下表是常用的numpy.linalg函数。
方法 | 说明 |
---|---|
diag | 以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0) |
dot | 矩阵乘法 |
trace | 计算对角线元素的和 |
det | 计算矩阵行列式 |
eig | 计算方阵的本征值和本征向量 |
inv | 计算方阵的逆 |
solve | 解线性方程组Ax=b,其中A为一个方阵 |
lstsq | 计算Ax=b的最小二乘解 |
numpy.diag — NumPy v1.21 Manual
numpy.diag(v, k=0):取矩阵主对角线的值,k=0,取主对角线;k>0,取主对角线之上;k<0,取主对角线之下。
>>> x = np.arange(9).reshape(3, 3)
>>> x
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> np.diag(x)
array([0, 4, 8])
>>> np.diag(x, k=1)
array([1, 5])
>>> np.diag(x, k=-1)
array([3, 7])
>>> np.diag(np.diag(x))
array([[0, 0, 0],
[0, 4, 0],
[0, 0, 8]])
numpy.trace — NumPy v1.21 Manual
矩阵的迹:矩阵主对角线元素之和。
>>> x = np.eye(3)
>>> x
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
>>> x.trace()
3.0
numpy.linalg.det — NumPy v1.21 Manual
矩阵(必须是方阵)行列式的值:The determinant of a 2-D array [[a, b], [c, d]] is ad - bc:
>>> a = np.array([[1, 2], [3, 4]])
>>> a
array([[1, 2],
[3, 4]])
>>> np.linalg.det(a)
-2.0000000000000004
numpy.linalg.eig — NumPy v1.21 Manual
方阵的本征值和本征向量:
>>> from numpy import linalg as LA
>>> x = np.diag((1, 2, 3))
>>> x
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
>>> w, v = LA.eig(x)
>>> w; v
array([1., 2., 3.])
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
numpy.linalg.inv — NumPy v1.21 Manual
矩阵的逆:设A是一个n阶矩阵,若存在另一个n阶矩阵B,使得:AB=BA=E ,则称方阵A可逆,并称方阵B是A的逆矩阵。
>>> from numpy.linalg import inv
>>> a = np.array([[1., 2.], [3., 4.]])
>>> a
array([[1., 2.],
[3., 4.]])
>>> ainv = inv(a)
>>> ainv
array([[-2. , 1. ],
[ 1.5, -0.5]])
numpy.linalg.solve — NumPy v1.21 Manual
解线性方程组Ax=b,其中A为一个方阵。
>>> a = np.array([[1, 2], [3, 5]])
>>> b = np.array([1, 2])
>>> x = np.linalg.solve(a, b)
>>> x
array([-1., 1.])
numpy基础--线性代数的更多相关文章
- 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算
http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...
- 利用Python进行数据分析——Numpy基础:数组和矢量计算
利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...
- 《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算
<利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对 ...
- [学习笔记] Numpy基础 系统学习
[学习笔记] Numpy基础 上专业选修<数据分析程序设计>课程,老师串讲了Numpy基础,边听边用jupyter敲了下--理解+笔记. 老师讲的很全很系统,有些点没有记录,在PPT里就不 ...
- NumPy 基础知识·翻译完成
原文:Numpy Essentials 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 面试求职交流群 7241 ...
- 【学习笔记】 第04章 NumPy基础:数组和矢量计算
前言 正式开始学习Numpy,参考用书是<用Python进行数据清洗>,计划本周五之前把本书读完,关键代码全部实现一遍 NumPy基础:数组和矢量计算 按照书中所示,要搞明白具体的性能差距 ...
- 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片
概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...
- 算法库:基础线性代数子程序库(Basic Linear Algebra Subprograms,BLAS)介绍
调试DeepFlow光流算法,由于作者给出的算法是基于Linux系统的,所以要在Windows上运行,不得不做大量的修改工作.移植到Windows平台,除了一些头文件找不到外,还有一些函数也找不到.这 ...
- numpy 基础操作
Numpy 基础操作¶ 以numpy的基本数据例子来学习numpy基本数据处理方法 主要内容有: 创建数组 数组维度转换 数据选区和切片 数组数据计算 随机数 数据合并 数据统计计算 In [1]: ...
- Numpy 基础
Numpy 基础 参考https://www.jianshu.com/p/83c8ef18a1e8 import numpy as np 简单创建数组 # 创建简单列表 a = [1, 2, 3, 4 ...
随机推荐
- LlamaIndex 安装与配置(不含OpenAI)
pip install llama-index 这是一个包含以下组件的启动包: llama-index-core llama-index-legacy (暂时包含) llama-index-llms- ...
- [GPT] export default {} 和 export {} 的区别
在JavaScript ES6模块系统中,export default {} 和 export {} 有明显的区别: 1. export default {}: 这个语法用于导出一个默认的模块成员,它 ...
- 七天.NET 8操作SQLite入门到实战 - (2)第七天Blazor班级管理页面编写和接口对接
前言 上一章节我们引入BootstrapBlazor UI组件完成了EasySQLite后台界面的基本架子的搭建,本章节的主要内容是Blazor班级管理页面编写和接口对接. 七天.NET 8 操作 S ...
- [4]自定义Lua解析器管理器-------演化脚本V0.7
[4]自定义Lua解析器管理器-------演化脚本V0.7 使用自定义委托来调用lua脚本中的多返回值函数和长参数类型的函数. 先看代码,依旧是上篇文章中所贴的脚本.新增调用两个函数testFunc ...
- Kettle下载和安装
一.Kettle简介 Kettle 是 PDI 以前的名称,PDI 的全称是Pentaho Data Integeration,Kettle 本意是水壶的意思,表达了数据流的含义.Kettle是一款国 ...
- margin-bottom:-1px无效的问题
在实现tab的时候,margin-bottom:-1px无效的问题 active的tab项,要指定他的border-top, 如: border-top: 1px solid #fff; border ...
- 2020年9月至10月 Splashtop 新功能
Splashtop 已为 Splashtop Business Access.Splashtop Remote Support.Splashtop SOS 和 Splashtop On-Prem ...
- C 编程异常 — /usr/bin/ld: 找不到 -lm
问题:在编程程序的时候报错. /usr/bin/ld: 找不到 -lm /usr/bin/ld: 找不到 -lc 原因:缺少库文件. 解决: yum install -y libstdc++-stat ...
- 我发现了字节OpenApi接口的bug!
本文记录我在对接字节旗下产品火山云旗下云游戏产品 OpenApi 接口文档时遇到的坑,希望能帮助大家(火山云旗下云游戏产品的文档坑很多,我算是从零到一都踩了一遍,特此记录,希望大家引以为鉴). 1. ...
- 微信小程序校园跑腿系统怎么做,如何做,要做多久
在这个互联网快速发展.信息爆炸的时代,人人都离不开手机,每个人都忙于各种各样的事情,大学生也一样,有忙于学习,忙于考研,忙着赚学分,忙于参加社团,当然也有忙于打游戏的(还很多),但生活中的一些琐事 ...