【20天搞定数据分析】第四天:Numpy数组中的运算与拼接,看这篇就够了...

您所在的位置:网站首页 numpy计算众数 【20天搞定数据分析】第四天:Numpy数组中的运算与拼接,看这篇就够了...

【20天搞定数据分析】第四天:Numpy数组中的运算与拼接,看这篇就够了...

2022-03-27 15:39| 来源: 网络整理| 查看: 265

【千锋教育干货暴击】

如果你想更好的学习Python乃至转行,弯道超车,快人一步!本课程零基础即可加入学习,抓住大数据、机器学习、人工智能时代的红利,开启你的第一行代码吧!

   ↓    ↓    ↓

千锋Python全套视频教程(700集)

千锋教育Python教程全套_python零基础入门到精通(学完可达到Python工程师水平)

上一篇数据分析的文章我们介绍了Numpy的索引和切片,用于获取Numpy数组的元素。我们也提到Numpy中ndarray对象是类似列表的,但是也有区别比如:

数组对象内的元素类型必须相同

数组大小不可修改

列表可以使用的符号有:+ 、* 、in,那在ndarray中能使用的有哪些?本篇文章主要介绍Numpy数组的一些运算和拼接内容。

广播机制

在Numpy中当数组进行运算时,如果两个数组的形状相同,那么两个数组相加就是两个数组的对应位相加,这是要求维数相加,并且各维度的长度相同。比如:

原来两个数是:

相加之后的结果:

当运算中两个数组的形状不同使时,numpy将会自动触发广播机制,那什么是广播机制呢?

复习下数学知识😂,在线性代数中我们曾经学到过如下规则:

a1 =3 ,a2 = 4,a1,a2是0维张量,即标量;

 b1,b2是1维张量,即向量;

c1,c2是如下所示的2维张量,即矩阵:

a1与a2之间可以进行加减乘除,b1与b2可以进行逐元素的加减乘除运算,c1与c2之间可以进行逐元素的加减乘除以及矩阵相乘运算(矩阵相乘必须满足维度的对应关系),而a与b,或者b与c之间不能进行逐元素的加减乘除运算,原因是他们的维度不匹配。而这种在数学方面的不可能在NumPy中,就可以通过广播完成这项操作。

 再比如:

此时data1是3行3列的矩阵,跟一个1进行运算,能否成功呢?在Numpy中这时ok的,data1中的每个元素都会跟1相加而得到一个新的矩阵,这就是广播机制。

所以结果就是:

如果是跟一个3行1列的进行加法呢?

这个操作也是ok的,结果是:

如果是跟一个2行3列的数据进行加法运算呢?

此时会报错:

报错的原因是什么呢?我们一起来看一张图

所以广播的规则是:

1.形状相同的广播

2.相同维度,但其中某一个或多个维度长度为 1 的广播:

3.如果是标量的话,会广播整个数组上

所以我们要首先了解numpy的广播机制,接下来才能更好的进行数组的运算。

numpy数组的运算

加法其实上面我们已经使用了数组的加法运算,而在运算中是使用广播机制的。假设我们现在有这样的两组数据:

结果:

减法

结果:

乘法

结果:

除法

结果:

当然还有整除和幂运算

结果:

如果是幂运算呢?

结果:

当然数组也可以进行比较,也是会自动应用广播机制

结果:

拼接

Numpy中提供了concatenate,append, stack类(包括hsatck、vstack、dstack、row_stack、column_stack),r_和c_等类和函数用于数组拼接的操作。各种函数的特点和区别如下表:

在我们学习拼接之前我们先了解一些轴和维度。

上一篇我们提到numpy中的ndim和shape来分别查看维度,以及在对应维度上的长度的。而其中的axis表示的是轴

concatenate函数

比如我们有两个数组:

所以是对两个数组进行了axis=0轴的合并,如果将axis换成1则变成:

append函数

函数的说明如下:

代码示例:

大家发现,若axis为None,则先将arr和values进行ravel扁平化,再拼接;如果指定axis=0表示x轴的拼接,而如果axis=1表示y轴的拼接。

stack函数

函数的说明如下:

代码演示:(仍然使用上面的data1和data2)

可以发现如果axis=1,就是x轴的依次进行组合,如果是axis=-1就是两个数组的列进行组合。当然如果想直接进行行或者列的拼接也可以使用:hstack、vstack分别表示只进行行的拼接,或者列的拼接,类似上面的axis=1或axis=-1的情况。

总结:

增加行(对行进行拼接)的方法有

增加列(对列进行拼接)的方法有:

内容比较多,大家要多多练习哦!

需要资料也可以关注微信公众号:Python专栏,事不宜迟,一起进步吧!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3