numpy 的介绍
NumPy 是一个运行速度非常快的数学库,主要用于数组计算。
NumPy中最核心的数据结构是ND array,表示N维数组。
特点:
数组中的数据类型要统一
大规模的数学运算时,运行速度快
提供了很多数据运算的函数比如平均值和标准差等等
深度学习中为啥经常用到numpy?
轻松处理大数据
深度学习的模型通常需要处理非常大的数据,比如图像、音频、文本等。这些数据通常会用数
组或矩阵表示。NumPy让这些数据的处理变得很简单,因为它提供了一个叫做“ndarray”的数组,
能够快速存储和操作这些数据。而且它可以方便地做切片、索引等操作,帮助我们轻松获取和修改
数据。
与深度学习框架兼容
现在很多深度学习框架(比如TensorFlow、PyTorch)都在背后使用NumPy。虽然这些框架也
有自己的数据结构(比如张量),但是它们通常和NumPy数组可以直接转换,也就是说你可以在
深度学习框架和NumPy之间自由转换数据,甚至用NumPy做一些小的计算和调试。
numpy数组初识
numpy数组简单创建
数据是数组的形式:
你平时看到的很多数据,像图片、音频、文本等,其实都可以看作是数组。比如,图片就是由
一个个像素点组成的,而这些像素点可以用三维数组来表示。学习如何用NumPy创建数组,就是
学会如何处理这些数据。
通过arry函数创建数组(一维、二维、三维)
numpy数组常用属性
.shape:数组的形状,使用频率最高
.ndim:数组的维数,使用频率一般
.astype:数组的数据类型,也比较常用
numpy数组轴的概念
可以把轴理解为第几个维度
numpy数组创建
等间隔数组
以下两个函数只能创建一维数组。
np.arange(): 按照给定的步长根据起点和终点生成一维数组
np.linspace(): 按照给定的数组长度,均匀划分起点到终点的距离生成一维数组
编
全等数组
以下3个函数创建的数组,所有数组元素均相等
np.zeros(): 生成一个全为0的一维或多维数组。
np.ones(): 生成一个全为1的一维或多维数组。
np.full(): 生成一个元素全部相等的一维或多维数组。
numpy数组操作
数组形变
改变数组的形状,数组的.shape属性会发生变化
ndarray.reshape(): 改变数组的形状ndarray.T: 数组转置ndarray.ravel(): 拉直数组
编辑
数组拼接
将多个相同维度的数组拼接起来
np.concatenate(): 数组拼接,可以选择特定的轴进行数组拼接np.hstack(): 数组横向拼接np.vstack(): 数组纵向拼接
np.concatenate可以沿数组不同的方向进行拼接。np.hstack对于二维及以上的数组,总是沿着axis=1的方向进行拼接。np.vstack对于二维及以上的数组,总是沿着axis=0的方向进行拼接。np.vstack只能拼接长度相同的一维数组。np.vstack拼接一维数组后输出的结果是一个二维数组
数组拆分
数组拼接的反向操作
np.hsplit(): 数组横向拆分np.vsplit(): 数组纵向拆分
numpy数组索引
numpy数组运算
基本运算
四则运算:(+-*/) 以及求模(%)、取整(//) 、乘方(**)
比较运算:==, !=, >, <, >=, <=
矩阵乘法:@
常用运算函数
常用的运算函数,会对数组中的每个元素执行运算
np.sqrt(arr): 开二次根号np.square(arr): 求平方相当于arr ** 2np.sin(arr): sin函数np.cos(arr): cos函数np.exp(arr): e的次幂np.log(arr): 以e为底的对数
常用统计函数
常用的统计函数,统计函数和运算函数的一大区别是:
运算函数计算的结果与原数组的形状一样,而统计函数计算结果数组形状与原数组不一样。
ndarray.max(): 求数组最大值ndarray.min(): 求数组最小值ndarray.mean(): 求数组均值ndarray.std(): 求数组标准差ndarray.var(): 求数组方差ndarray.sum(): 数组求和ndarray.argmax(): 求数组最大值所在的位置ndarray.argmin(): 求数组最小值所在的位置
上面这些函数,用法都大差不差。它们都有axis这个参数,主要就是控制这个参数。
因此只需要掌握参数axis的对数组计算结果有何影响即可。
如果不指定轴axis,默认对整个数组计算统计量
axis=None
axis=1
参考文献:
[1]GitHub - Light2077/drawing_and_studying_numpy: 边画边学numpy