为什么要用Numpy
Numpy是由C语言编写的,对代码编译更快、Numpy数组内的数据必须统一,且保持连续的存储在内存中。在相同的计算下,Numpy的运行速度是python的25倍,这是质的飞跃。
什么时候用Numpy
实现向量化、矩阵化操作的时候优先考虑Numpy。
Numpy的安装
numpy安装非常简单,打开命令指示符输入代码
pip install numpy
既可。
Numpy数组的创建
从列表开始
设置数据类型
二维数组
从头开始创建
创建一个长度为5的数组,值都为零
创建一个2*4的浮点型数组,值都为1
创建一个3*5的数组,值都为8.8
创建一个3*3的单位矩阵
创建一个线性序列的数组,从1开始,到15结束,步长为2
创建一个4元素的数组,这四个数均匀的分配到0-1
创建一个10个元素的数组,形成1-10^9的等比数列
创建一个3*3的,在0-1之间均匀分布的随机数构成的数组
创建一个3*3的,在0-1之间正态的随机数构成的数组
创建一个3*3的,在0-10之间随机整数构成的数组
随机重排列
产生新的列表
修改原列表
随机采样
生成一个10-25步长为1的数组
随机选择其中的数据,组成4行5列的数组
按概率采样
p为一维数组。表示每个元素被采样的概率。如果不指定,则默认每个元素被采样的概率相等。
下面代码为每一个元素越大,他被采样的几率就越大。
Numpy数组的性质
数组的属性
数组的形状shape
数组的维度
数组的大小
数组的大小为元素的个数。
数组的数据类型
数组的索引
一维数组的索引
类似于列表的索引
多维数组的索引---以二维为例
注意:numpy数组的数据类型是固定的,向整形数组插入一个浮点值,浮点值会向下取整。
数组的切片
一维数组
跟列表相似
多维数组---以二位为例
前两行、前三列
获取数组的行和列
从0开始计数,取第一行
切片获取的是试图,而非副本
注意:视图元素发生修改,则原数据亦发生相应的修改
修改切片的安全方式:copy
数组的变形
n*m转a*b(reshape)
注意:reshape返回的是视图,而非副本。
多维向量转一维向量(flatten、ravel)
flatten
注意:flatten返回的是一个副本
ravel
注意:raval返回的视图
数组的拼接
水平拼接--非视图(列拼接hstack)
垂直拼接-非视图(行拼接vsrtack)
数组的分裂
split的用法
hsplit的用法(列分裂)
vsplit的用法(行分裂)
Numpy四大运算
向量化运算
与数字加减乘除
绝对值
三角函数
指数运算
对数运算
两个数组的运算
都是点对点的运算
矩阵运算
矩阵转置
矩阵乘法
dot矩阵乘法
点乘
广播运算
规则:如果两个数组的形状在维度上不相同不相匹配
那么数组的形式会沿着维度较小的往大的进行扩展匹配数组形状
比较运算和掩码
比较运算
操作布尔数组
sum
计算满足条件的个数
all
是否所有元素都满足这个条件
any
至少一个元素满足这个条件
对行或者列判断
将布尔数组作为掩码
花哨的索引
一维数组
注意:结果的形状与索引数组ind一致
多维数组
其他Numpy通用的函数
数值排序
产生新的数组 (np.sort)
替换原数组(sort)
获得排序索引 (argsort)
最大值最小值
取最大值和最小值
最大值和最小值的索引
数值求和、求积
求和
整体求和
按行求和
按列求和
求积
中位数
均值
方差
标准差