1、概述
Numpy对于机器学习可能不如SKLearn那么重要,但是Numpy能对机器学习过程中常用的数据结构(向量、矩阵以及张量)进行高效的操作,所以很有必要对其进行学习、记忆以及总结,当然在实践中多使用自然比记忆更好。
2、常用Numpy函数的总结
import numpy as np # 矩阵、向量操作类 vector = np.array([1,2,3]) # 创建一个vector matrix = np.array([[1, 2, 3], [2, 3, 4]]) # 创建一个matrix matrix = np.mat([[1,2,3], [2,3,4]]) # 创建一个matrix vector[:] # 选择向量中的所有元素 vector[:3] # 选择一个向量中第0—>3个元素 matrix[:2,:] # 选择matrix中第0,1两行的所有元素 matrix[:,1:2] # 选择第一列上的所有行元素 matrix.shape # 查看矩阵matrix的行数和列数 matrix.size # 查看矩阵matrix中的所有元素的数量 matrix.ndim # 查看矩阵的维度 np.arange(10) # 返回[0,...,9]的向量 # 特殊矩阵、向量创建 np.zeros((3,4)) #创建3x4的元素全为0的矩阵 np.ones((3,4)) #创建3x4的元素全为1的矩阵 np.empty((2,3)) #创建2x3的空矩阵,初始化为随机的垃圾数 np.zeros_like(matrix) #创建和matrix相同shape的全0矩阵 np.ones_like(matrix) #创建和matrix相同shape的全1矩阵 np.empty_like(matrix) #创建和matrix相同shape的空矩阵 np.eye(5) #创建一个5x5的矩阵,对角元素为1,其他为0 np.full((3,5),6) #创建元素全为6,shape=(3,5)的矩阵 # 矩阵统计类 np.max(matrix) # 返回matrix所有元素中的最大值 np.max(matrix, axis=0) # 返回matrix所有列元素中的最大值 np.max(matrix, axis=1) # 返回matrix所有行元素中的最大值,下面的统计类的类似含义 np.min(matrix) # 返回matrix所有元素中的最小值 np.mean(matrix) # 返回matrix所有元素的平均值 np.var(matrix) # 返回matrix所有元素的方差 np.std(matrix) # 返回matrix所有元素的标准差 以及abs绝对值、sin、cos、sqrt、exp; cumsum累积求和、cumproduct累积求积; sum、mean、median中位数、corrcoef相关系数。 # 矩阵形状操作类 matrix.reshape(a, b) # 变形操作由原有的n*m维->a*b维,前提是n*m=a*b matrix.T # 对矩阵进行转置操作 np.transpose(matrix) # 与matrix.T具有一样的效果,对矩阵进行转置 matrix.flatten() # 对matrix按行进行平铺操作,返回一个向量vector # 矩阵性质输出类 np.linalg.matrix_rank(matrix) # 求取矩阵的秩 np.linalg.det(matrix) # 求取矩阵的行列式的值 matrix.diagonal() # 返回matrix的对角线元素 matrix.diagonal(offset=+1/-1) # +1代表主对角线上面的次对角线,-1代表主对角线下面的次对角线 matrix.trace() # 返回matrix的迹 eigenvalues,eigenvectors = np.linalg.eig(matrix) # 求取matrix的特征值和特征向量 # 矩阵运算类 np.dot(matrix1,matrix2) # 两个矩阵相乘 mat1 @ mat2 # 也是两个矩阵matrix相乘 mat1 * mat2 # 两个矩阵的对应元素相乘 np.linalg.inv(matrix) # 返回矩阵的逆 # 随机数相关操作 np.random.seed(666) # 设置随机种子,括号内可以为任意整数 np.random.random(3) # 返回3个0.0到1.0之间的随机浮点数 np.random.randint(0,11,3) # 返回3个1到10之间的随机整数 np.random.normal(0.0,1.0,3) # 返回标准正态分布中的随机3个数 np.random.logistic(0.0,1.0,3) # 返回logistic分布中的3个数 np.random.uniform(1.0, 2.0,3) # 返回 [1,2) 区间中的3个数 np.random.randn() #返回标准正态分布随机数 np.random.shuffle() #随机打乱顺序 # 合并操作 np.append(a,b) # 但是比较占用内存 np.concatenate(a,b) # 直接的拼接操作
参考:
《Python机器学习手册》——从数据预处理到深度学习
《Python深度学习——基于PyTorch》