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 ...
随机推荐
- 多python版本的库安装和导库
同时安装多python版本的,使用pip安装python的库,以及导出python库列表及版本,使用导出的库列表批量进行新环境的库安装. 1.同时安装python2和python3时,要进行pip安装 ...
- 向量数据库Chroma学习记录
一 简介 Chroma是一款AI开源向量数据库,用于快速构建基于LLM的应用,支持Python和Javascript语言.具备轻量化.快速安装等特点,可与Langchain.LlamaIndex等知名 ...
- anconda配置tensorflow环境
一.anconda的安装 1.进入Anaconda官网并按照电脑配置选择合适的安装包 Anaconda官网:https://www.anaconda.com/ 点击进入 不同的三个版本,分别是wind ...
- 基于 KubeVela 的机器学习实践
简介:本文主要介绍如何使用 KubeVela 的 AI 插件,来帮助工程师更便捷地完成模型训练及模型服务. 作者:KubeVela 社区 在机器学习浪潮迸发的当下,AI 工程师除了需要训练.调试自己 ...
- 从托管到原生,MPP架构数据仓库的云原生实践
简介:本文介绍了云原生数据仓库产品AnalyticDB PostgreSQL从Cloud-Hosted到Cloud-Native的演进探索,探讨为了实现真正的资源池化和灵活售卖的底层设计和思考,涵盖 ...
- Anaconda环境下GPT2-Chinese的基本使用记录
偶然在看到了这个项目,感觉很厉害,于是就折腾了下,跑了一跑 项目地址:https://github.com/Morizeyao/GPT2-Chinese 如果Github下载太慢的可以用这个代下载:h ...
- OLAP系列之分析型数据库clickhouse权限控制(六)
一.clickhouse权限管理 users.xml默认配置文件: <?xml version="1.0"?> <clickhouse> <profi ...
- gprMax电磁波正演模拟方法
文章首发于:https://blog.zhaoxuan.site/archives/37.html: 第一时间获取最新文章请关注博客个人站:https://blog.zhaoxuan.site. 目录 ...
- 《Modern C++ Design》之上篇
如下内容是在看侯捷老师翻译的<Modern C++ Design>书籍时,整理的code和摘要,用于不断地温故知新. 第一章 1. 运用 Template Template 参数实作 Po ...
- nodejs搭建chatgpt服务
5分钟快速搭建基于nodejs的chatgpt服务 写在前面 首先大家都知道,在国内是无法成功调用openapi的接口,甚至openai的官网都很难打开.所以如果想使用chatgpt的几乎是不可能,不 ...