一、什么是numpy

处理多维数组(矩阵)的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。本身是由C语言开发,是个很基础的扩展,Python其余的科学计算扩展大部分都是以此为基础。

二、快速入门numpy库

  1.导入numpy(安装anaconda已带很多科学计算包,无需安装导入即可)

     

numpy数据分析框架全面讲解 numpy数据分析实例_numpy数据分析框架全面讲解

导入画图工具matplotlib,用于数据分析与可视化

    

numpy数据分析框架全面讲解 numpy数据分析实例_numpy数据分析框架全面讲解_02

打开一张猫的图片,发现计算机眼里,它只是一个数组,这样numpy也就上场了!:

    

numpy数据分析框架全面讲解 numpy数据分析实例_numpy数据分析框架全面讲解_03

使用type就能发现,他是Numpy的ndarray,使用imshow()可以查看这只可爱的猫:

  

numpy数据分析框架全面讲解 numpy数据分析实例_赋值_04

三、创建numpy.ndarray

1.使用np.array,由python的list创建

    

numpy数据分析框架全面讲解 numpy数据分析实例_多维数组_05

多维数组合理:

    

numpy数据分析框架全面讲解 numpy数据分析实例_数组_06

通过shape查看是几行几列的:

    

numpy数据分析框架全面讲解 numpy数据分析实例_numpy数据分析框架全面讲解_07

图片的分别为长宽加最后一维:颜色

     

numpy数据分析框架全面讲解 numpy数据分析实例_数组_08

2.通过rountines函数创建ndarray

ones:创建指定形状数组,数据元素使用1来填充

    

numpy数据分析框架全面讲解 numpy数据分析实例_numpy数据分析框架全面讲解_09

使用imshow则可以显示这张图片了:

plt.imshow(n3)

// zeros同理

使用其他自定义数字,通过full创建:

    

numpy数据分析框架全面讲解 numpy数据分析实例_数组_10

通过eye创建对角线矩阵:对角线为1,其他均为0(满秩)

    

numpy数据分析框架全面讲解 numpy数据分析实例_numpy数据分析框架全面讲解_11

通过linspace创建有规律的数组:(默认取样数量num为50个)

    

numpy数据分析框架全面讲解 numpy数据分析实例_numpy数据分析框架全面讲解_12

通过arange创建数组,在给定区间创建均匀间隔的值:(左闭右开)

    

numpy数据分析框架全面讲解 numpy数据分析实例_numpy数据分析框架全面讲解_13

通过randint生成随机数组,例如0到100之间,生成5个数:

      

numpy数据分析框架全面讲解 numpy数据分析实例_数组_14

通过randn生成一个标准正太分布的数组

通过normal生成自定义的正太分布(其中loc参数表示拐点,scale表示波动性)

通过random.random生成0-1左闭右开的随机数组

 四、ndarray的基本操作

1.索引

    和列表完全一致,使用下标取值

    

numpy数据分析框架全面讲解 numpy数据分析实例_多维数组_15

多维同理,例如使用randint(0,100,(3,4))创建的3行四列数组,使用n1[0,1]取出第0行第1个

2.切片

    一维数组与列表切片完全一致,多维同理

    

numpy数据分析框架全面讲解 numpy数据分析实例_多维数组_16

多维数组和一维数组是同理的(比如3维数组可以看成元素是2维的1维数组),多维数组的切片,就是三维切哪些,二维切哪些,一维切哪些

    

numpy数据分析框架全面讲解 numpy数据分析实例_多维数组_17

使用-1的步长表示反转:n1[::-1]

3.变形

      使用reshape,传入tuple进行变形操作(多维数组传入负数直接变成一维数组:cat.reshape(-1))

    

numpy数据分析框架全面讲解 numpy数据分析实例_数组_18

4.级联

np.concatenate() ,参数是列表(可以传List或者tuple),纬度和形状必须相同,通过axis可以改变级联的方向

    

numpy数据分析框架全面讲解 numpy数据分析实例_数组_19

使用axis改变级联方向

    

numpy数据分析框架全面讲解 numpy数据分析实例_numpy数据分析框架全面讲解_20

图片同理:

    

numpy数据分析框架全面讲解 numpy数据分析实例_赋值_21

使用np.hstack与np.vstack进行纬度变更,分别是变成水平与垂直转换,来处理自己

5.切分

split切分,在索引位置切分,分成多个数组:

      

numpy数据分析框架全面讲解 numpy数据分析实例_numpy数据分析框架全面讲解_22

      

numpy数据分析框架全面讲解 numpy数据分析实例_多维数组_23

使用vsplithsplit进行垂直于水平切分:

6.副本

     需要注意的是所有赋值运算不会给ndarray创建副本,原对象的改变,也会改变ndarray的值(两个ndarray之间赋值,赋值的改变会影响被赋值的对象) ,要使用副本,使用copy:n2 = n1.copy()。否则直接 n2 = n1,n1会影响n2的值

 五、ndarray的聚合操作

可以直接调用ndarray的函数操作,例如求最大最小值:

    

numpy数据分析框架全面讲解 numpy数据分析实例_赋值_24

推荐使用np.max等操作,可以控制对某个轴(axis = 0时是Y轴)求最大值:

    

numpy数据分析框架全面讲解 numpy数据分析实例_赋值_25

其他几个max、min、sum等同理    

NumPy:数学和统计方法

常用函数:

sum    求和
cumsum 求前缀和
mean    求平均数
std    求标准差
var    求方差
min    求最小值
max    求最大值
argmin    求最小值索引
argmax    求最大值索引

 六、ndarray的矩阵操作

1.算数运算

    基础的加减乘除(通过基础的 + -等计算符号,或者通过np.add等进行操作)

    

numpy数据分析框架全面讲解 numpy数据分析实例_numpy数据分析框架全面讲解_26

2.矩阵积dot

必须是shape相反的,n行m列,乘以m行n列

    

numpy数据分析框架全面讲解 numpy数据分析实例_数组_27

矩阵乘法原理如下:

    

numpy数据分析框架全面讲解 numpy数据分析实例_数组_28

七、ndarray广播机制

1)  为缺失元素补1

  2)假定缺失元素用已有值补充  

例如,一个2行3列的数组与一行3列的数组进行相加,就会有广播机制:

  

numpy数据分析框架全面讲解 numpy数据分析实例_多维数组_29

 八、ndarray的排序

1.快速排序

np.sort():不改变输入

    ndarray.sort():本地处理,不占用空间,但改变输入

    

numpy数据分析框架全面讲解 numpy数据分析实例_numpy数据分析框架全面讲解_30

2.部分排序

    只取最大的k个值或最小的k个值:np.partition(n,k):k为正时为最小的几个数,k为负时为最大的几个数(但这几个数并没有排序)