一.前言
书接上回,我们完成了安装并使用了miniconda和jupyetr,我们继续回到学习机器人学的路上来。首先我们来学习使用一个矩阵库Numpy,并且通过Numpy将我们第一节学习到的矩阵相关计算一一实现。话不多说,马上开始!
二.ros2学习
前三小节学习内容可到往期博客中查找
4.矩阵运算实战
1.Numpy简介
NumPy
是一个功能强大的Python
库,主要用于对多维数组执行计算。
NumPy可以使用在以下场景:
-
机器学习模型: 在编写机器学习算法时,需要对矩阵进行各种数值计算。例如矩阵乘法、换位、加法等。NumPy提供了一个非常好的库,用于简单(在编写代码方面)和快速(在速度方面)计算。NumPy数组可用于存储训练数据和机器学习模型的参数。
-
图像处理和计算机图形学: 计算机中的图像表示为多维数字数组。NumPy成为同样情况下最自然的选择。实际上,NumPy提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。
-
数学任务: NumPy对于执行各种数学任务非常有用,如数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于Python的对MATLAB的快速替代。(可用于改写手眼标定代码)
2.Numpy安装
尝试在单元格内导入numpy,如果报错说明你没有安装
在单元格内输入下面的代码,然后Shift+Enter
执行即可。
注意指令前面有一个!,感叹号代表我们输入的是一句命令行
!pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完成后,再次导入就不会报错了。
3.创建矩阵
创建一个3*3的单位矩阵。
创建一个3*3的零矩阵。
创建一个3*3的随机矩阵。
从已有数组创建矩阵
假设我们已经有了数据,我们想创建一个矩阵怎么办呢?
比如我们创建一个2*2的矩阵,矩阵的数据分别是[1,2,3,4]。
我们可以通过reshape改变矩阵的形状,这里我们把矩阵变成了2*2的样子。
判断两个矩阵是否相等
numpy的allclose方法,比较两个array是不是每一元素都相等,默认在1e-05的误差范围内。
4.计算矩阵
4.1 矩阵加法/减法
加法使用np.add
,减法np.subtract
4.2 矩阵乘法
乘法使用np.dot
4.3 矩阵求逆
矩阵求逆使用np.linalg.inv
8.8817842e-16就是代表0
注意,并不是所有的矩阵都有逆,比如零矩阵就没有逆,如果尝试用numpy
来求逆则会出现错误(根据线代知识,行列式不为零的矩阵才有逆)
4.4 矩阵转置
矩阵转置在矩阵后使用.T
即可