numpy向量转换为矩阵_可视化图解Python科学计算包NumPy
python 定义数组NumPy包是python⽣态系统中数据分析、机器学习和科学计算的主⼒。它极⼤地简化了向量和矩阵的操作。Python的⼀些主要软件包依赖于NumPy作为其基础架构的基础部分(例如scikit-learn、SciPy、pandas和tensorflow)。我们将介绍⼀些使⽤NumPy的主要⽅法,以及在我们为机器学习模型提供服务之前它如何表⽰不同类型的数据(表格、声⾳和图像)。
import numpy as np
⼀、数组操作
1.1创建数组
通过将python列表传递给NumPy对象,使⽤np.array()创建⼀个NumPy数组(即ndarray)。Python创建了我们在右边可以看到的数组:
⼀般情况,我们希望直接使⽤NumPy作为初始化的数组数据。NumPy为这些情况提供了诸如ones(),zeros()和random.random()类等⽅法。我们只需要向这些⽅法传递要⽣成的元素数量的参数:
⼀旦我们创建了数组,我们就可以开始以有趣的⽅式操作它们。
1.2 数组算术
先来创建两个NumPy数组来展⽰它们的⽤处。我们称之为data和ones:
这两个数组的加法就像我们+1那么简单(每⼀⾏相加)。
可以发现这样的计算不必在循环中实现。这是⾮常好的抽象处理,可以让你在更⾼层次上思考问题,⽽不是陷⼊如何实现计算的算法⾥⾯。我们还可以像下⾯⼀样进⾏其他运算:
通常情况下,我们希望在数组和单个数字之间执⾏操作(我们也可以将其称为向量和标量之间的操作)。⽐如说,我们的数组表⽰以英⾥为单位的距离,我们希望将其转换为公⾥数。我们只需要让数据* 1.6就可以了。
NumPy让每个单元格都会发⽣相乘叫做⼴播。
1.3索引数组
我们可以索引、切⽚NumPy数组。
1.4 数组聚合
NumPy为我们提供⾮常好⽤的聚合功能:
除了最⼩值、最⼤值和总和之外,还得到⾮常棒的东西,⽐如平均值、所有元素相乘的结果、标准差,以及其他很多。
⼆、多维处理
2.1 创建矩阵
所有的例⼦都在⼀个维度上处理向量。NumPy的厉害之处是能够将我们⽬前所看到的所有内容应⽤到任意维度上。我们可以传递⼀个Python列表,让NumPy创建⼀个矩阵来表⽰它们:
np.array([[1,2],[3,4]])
我们也可以使⽤上⾯提到的相同⽅法(ones(),zeros()和random.random()),只要我们给它们⼀个元组来描述我们正在创建的矩阵的维度:
2.2 矩阵算术
如果两个矩阵的⼤⼩相同,我们可以使⽤算术运算符(+ - * /)来进⾏矩阵计算。NumPy将这些作为位置操作处理:
只有当不同维度为1时(例如矩阵只有⼀列或⼀⾏),我们才能在不同⼤⼩的矩阵上进⾏这些算术运算,在这种情况下,NumPy将其⼴播规则⽤于该操作:
2.3 点积
NumPy为每个矩阵提供了⼀个dot()⽅法,我们可以⽤它来执⾏与其他矩阵的点积运算:
两个矩阵在它们彼此⾯对的⼀侧必须具有相同的尺⼨(上图底部红⾊的数字)。
您可以将此操作可视化为如下所⽰:
2.4 矩阵索引
当我们操作矩阵时,索引和切⽚操作变得更加有⽤:
冒号表⽰从哪个位置到哪个位置,留空表⽰开头或者结尾;逗号表⽰⾏和列。NumPy的索引是从0开始的,并且后⾯的⽅括号是不包含后⾯的值(即⼩于后⾯的值)。
2.5 矩阵聚合
我们可以像聚合向量⼀样聚合矩阵:
我们不仅可以聚合矩阵中的所有值,还可以使⽤axis参数在⾏或列之间进⾏聚合:
2.6 转置和重塑
处理矩阵时的⼀个共同需求是需要旋转矩阵。当我们需要采⽤两个矩阵的点积并需要对齐它们共享的维度时,通常就是这种情况。NumPy 数组有⼀个⽅便的属性叫做T来获得矩阵的转置:
在更⾼级的应⽤中,您可能会发现⾃⼰需要切换某个矩阵的维度。在机器学习应⽤程序中通常就是这种情况,其中某个模型期望输⼊的某个形状与您的数据集不同。在这些情况下,NumPy的reshape()法很有⽤。您只需将矩阵所需的新尺⼨传递给它即可。
2.7 更多维度
NumPy可以完成我们在任何维度定义数据。其中⼼数据结构称为ndarray(N维数组)。
在很多⽅⾯,处理新维度只需在NumPy函数的参数中添加逗号:
三、公式计算
我们举⼀个计算均⽅误差的例⼦。实现适⽤于矩阵和向量的数学公式是考虑NumPy的关键⽤例。例如均
⽅误差MSE公式,它是监督机器学习、模型处理、回归问题的核⼼公式:
在NumPy中实现这⼀点是轻⽽易举的:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论