4.1 Numpy优势
1 简介
科学计算库
支持数组和矩阵操作
ndarray
2 ndarray
相同类型元素的集合
3 优势
内存块上的优势
并行化运算
C语言编写,解除了GIL
4.2 N维数组-ndarray
1 属性
ndarray.shape 数组的形状
ndarray.ndim 数组维度
ndarray.size 数组中的元素个数
ndarray.itemsize 一个数组元素的字节长度
ndarray.dtype 数组元素的类型
2 形状
一维,二维,三维..
3 类型
bool,int,float...
创建数组时可以指定类型,整型默认为int64,浮点型默认为float64
4.3 基本操作
1 生成0 1 数组
np.ones([])
np.ones_like()
np.zeros([])
np.zeros_like()
2 从现有数组中生成(t通过修改查看复制后的数字是否发生改变)
np.array() -- 深拷贝
np.asarray() -- 浅拷贝
3 生成固定范围数组
np.linspace()
参数:
start:起始值
stop:终值
num:元素个数
返回:
等差数列
np.arange()
参数:
start:起始值
stop:终值
step:步长
返回:
等差
np.logspace()
参数:
start:指数起始值
stop:指数终值
num:元素个数
返回:
以10为底的等比数列
4 生成随机数组
1 正态分布(高斯分布)(当μ = 0,σ = 1时的正态分布是标准正态分布)
1 参数
μ :均值,决定了数据分布的位置(中心点在x轴上的位置)
σ :标准差,反应数据的离散程度(标准差越小,,数据越集中)
2 API
np.random.normal()
参数:
loc : 均值
scale : 标准差
size: 数组形状
np.random.randn() 参数指定形状
np.random.stardand_normal()
生成标准正态分布的随机数
2 均匀分布
1 API
np.random.uniform()
参数:
low:下界
high:上界(不包含)
size:数组形状
np.random.rand()
生成[0,1)之间均匀分布数据
np.random.randint()
生成整数的均匀分布数据
5 索引切片
直接利用索引切片
对像[:,:] -- 先行后列
6 形状修改
np.reshape()
不对原数组进行修改,
行列不互换
np.resize()
对原数组进行修改
行列不互换
ndarray.T()
转置,行列互换
7 类型修改
ndarray.astype()
8 去重
np.unique()
4.4 ndarray运算
1 逻辑运算
直接使用逻辑运算符
2 通用判断函数
np.any():存在满足条件的就返回True
np.all():全部满足条件返回True
3 三元运算符
np.where()
结合logical_and和logical_or进行运算
4 统计运算
min,max,mean,std,var...
返回最大最小的索引时:
argmax(),argmin()
4.5 数组间运算
1 数组与数之间的运算
每一个元素与数进行运算
2 数组与数组之间
1 两个数组形状相同时可以运算
2 若形状不同,满足广播机制的条件也可以
1 某一维度的大小相同
2 其中一个数组的该维度大小为1
4.6 数学:矩阵
1 矩阵
二维数组
2 向量
特殊的矩阵,列向量
3 加法和标量乘法
加法:对应元素相加
标量乘法:每个元素与标量相乘
4 矩阵乘法
(M行, N列)*(N行, L列) = (M行, L列)
性质:
满足结合律,不满足交换律
5 逆和转置
1 单位矩阵
对角线元素为1,其他位置为0
2 逆
若两个矩阵相乘的结果为单位矩阵,则这两个矩阵互为逆矩阵
3 转置
行列互换的结果
6 API
np.matmul():只能用于矩阵与矩阵之间的乘法
np.dot():可用于矩阵与矩阵,矩阵与标量之间的乘法