Numpy(下)
引言:回顾和概览
Numpy是一个科学计算包。如果你做数据清洗、整合的时候,不一定用到,直接用Pandas就好,Numpy是一个科学计算包,这个包里面的数据类型一种,就是ndarray,所有的计算都是基于这个数据类型,首先就是把其他的数据类型转换为ndarray。在数据类型里,整数32,浮点型32/64先掌握,类型的查看需要掌握,改变数据类型用astype。
矢量化运算比较重要,非常简化了运算。创建常用数组,不是用矩阵运算用的不是很多。空值经常用到。随机数组比较重要,在np.random模块下,你可以做一个文档记一下,比如randint是整数,你只要知道这个包里有什么功能,具体的参数现查就可以,大概知道单词怎么拼就行,实在不行百度也可以。随机数种子比较重要,实现随机的数据是相同的。常用属性中,shape比较常用。
数组的索引和切片是重点。二维的,用逗号分开,定位出一块,定位到行和列,交叉就是定位的坐标。
完全不复制、完全复制和浅复制主要是理解:
完全不复制:a=b(没有区别)
完全复制(深复制):所有的都复制新的,跟原来的没有任何关系。
浅复制(视图):多层的时候,只复制最前面的第一层
一、数组的变形
reshape:请注意,如果希望该方法可行,那么原始数组的大小必须和变形后数组 的大小一致。如果满足这个条件,reshape 方法将会用到原始数组的一 个视图。
resize :可以直接修改数组本身。
无论是ravel(拉伸)、reshape、T,它们都不会更改原有的数组形状,都是返回一个新的数组。也就是我们之前学过的浅复制。
二、数组的拼接
拼接或连接 NumPy 中的两个数组主要由 np.concatenate实现。axis这里是轴的概念。
三、数组的分裂
使用split,可以指定均匀切割成几份,也可以指定沿着哪个位置进行切割, 还可以指定沿着哪个轴进行切割.
np.split(ary, indices_or_sections, axis=0)
#indices_or_sections当这个参数为整数时,沿着指定的轴,将数组均匀切分 np.split(k,2) #默认axis=0 np.split(k,1,axis=1) #指定的切分,传的就不是整数,而是索引值 np.split(k,[1]) np.split(k,[1,3])
四、广播机制
我们都知道,Numpy中的基本运算(加、减、乘、除、求余等等)都是元素级别的,但是这仅仅局限于两个数组的形状相同的情况下。
可是大家又会发现,如果让一个数组加1的话,结果是整个数组的结果都会加1,这是什么情况呢?
五、Numpy运算
1.基本运算
Numpy 中数组上的算术运算符使用元素级别。最后的结果使用新的一个数组来返回。
需要注意的是,乘法运算符*的运算在NumPy数组中也是元素级别的(这与许多矩阵语言不同)。如果想要执行矩阵乘积,可以使用dot函数。
2.常用函数
3.规约函数
下面所有的函数都支持axis来指定不同的轴,用法都是类似的。这个是比较重要的,就是统计函数!
4.掩码提取
#你想提取什么,都可以通过创建布尔数列完成。 and 与 & or 或 | not 非 ~ #提取所有小于5的偶数数据 k[ (k<5) & (k%2 ==0) ]
掩码比较重要,在Pandas用的比较多。