前言:
今天我们介绍两个科学运算当中最为重要的两个模块,一个是 numpy,一个是 pandas。任何关于数据分析的模块都少不了它们两个。为什么使用 numpy and pandas
运算速度快:numpy 和 pandas 都是采用 C 语言编写, pandas 又是基于 numpy, 是 numpy 的升级版本。
消耗资源少:采用的是矩阵运算,会比 python 自带的字典或者列表快好多
Numpy属性
ndim:维度
shape:行数和列数
size:元素个数
创建ndarray
array:创建数组
dtype:指定数据类型
zeros:创建数据全为0
ones:创建数据全为1
empty:创建数据接近0
arrange:按指定范围创建数据
linspace:创建线段
注意:
numpy默认ndarray的所有元素的类型是相同的
如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int
Numpy的基本操作
1.索引:
(一维与列表完全一致 多维时同理),根据索引修改数据、查看数据2.切片:
一维与列表完全一致 多维时同理
3.变形
使用arr.reshape()函数,注意参数是一个tuple
例:将一维数组变形成多维数组===arr.reshape((2,5))
例:将多维数组变形成一维数组===arr2 = arr1.reshape((15,))
例:arr2.reshape((-1,3)) ===其中-1表示的是根据列自动计算出行
实际应用:
图片翻转:图片本质上是三维的array,先将三维变形为一维,再通过切片翻转,然后在讲一维array变形为三维就实现了图片的翻转。4.级联
使用np.concatenate((a1, a2, ...), axis=0)函数
级联需要注意的点:
--- 1.级联的参数是列表:一定要加中括号或小括号
--- 2.维度必须相同
--- 3.形状相符:在维度保持一致的前提下,如果进行横向(axis=1)级联,必须保证进行级联的数组行数保持一致。如果进行纵向(axis=0)级联,必须保证进行级联的数组列数保持一致。
--- 4.可通过axis参数改变级联的方向
5.切分
与级联类似,三个函数完成切分工作:
-- np.split(arr,[行,列],轴):参数2是一个列表类型
-- np.vsplit
-- np.hsplit
例:np.split(arr,[2,4],axis=0)
应用:照片剪切
ndarray的聚合操作
求和np.sum()
最大最小值:np.max()/ np.min()
平均值:np.mean()
广播机制(重要)
ndarray广播机制的三条规则:缺失维度的数组将维度补充为进行运算的数组的维度。缺失的数组元素使用已有元素进行补充。
规则一:为缺失的维度补1(进行运算的两个数组之间的维度只能相差一个维度)
规则二:缺失元素用已有值填充
规则三:缺失维度的数组只能有一行或者一列
ndarray的排序
快速排序
np.sort()与ndarray.sort()都可以,但有区别:
np.sort()不改变输入(原ndarray顺序不变)
ndarray.sort()本地处理,不占用空间,但改变输入(顺序改变,被覆盖)
部分排序(不常用)
np.partition(a,k) 有的时候我们不是对全部数据感兴趣,我们可能只对最小或最大的一部分感兴趣。
当k为正时,我们想要得到最小的k个数
当k为负时,我们想要得到最大的k个数