numpy、pandas、matplotlib、sklearn是python机器学习领域,最核心的几个模块,玩转了这几个模块也就玩转了机器学习,其中,numpy又是这几个模块中最基础的模块。
内置数据结构——ndarray一、创建ndarray:
1、基于list或tuple
2、基于np.arange:
3、基于np.arange和reshape构建多维数组:
4、基于random构建随机数组:
(1)numpy.random.rand(d0,d1,…,dn)
rand 函数根据给定维度生成 [0,1) 之间的数据,包含 0,不包含 1
dn 表格每个维度
返回值为指定维度的 array
(2)numpy.random.randn(d0,d1,…,dn)
• randn 函数返回一个或一组样本,具有标准正态分布。
• dn 表格每个维度
• 返回值为指定维度的 array
(3)numpy.random.randint(low, high=None, size=None, dtype=“l”)
• 返回随机整数,范围区间为 [low,high),包含 low,不包含 high
• 参数:low 为最小值, high 为最大值, size 为数组维度大小, dtype 为数据类型,默认的数据类型是 np.int
• high 没有填写时,默认生成随机数的范围是 [0, low)
(4)生成 [0,1) 之间的浮点数
• numpy.random.random_sample(size=None)
• numpy.random.random(size=None)
• numpy.random.ranf(size=None)
• numpy.random.sample(size=None)
(5)numpy.random.choice(a, size=None, replace=True, p=None)
• 从给定的一维数组中生成随机数
• 参数:a 为一维数组类似数据或整数;size 为数组维度;p 为数组中的数据出现的概率
• a 为整数时,对应的一维数组为 np.arange(a)
(6)numpy.random.seed()
• np.random.seed() 的作用:使得随机数据可预测。
• 当我们设置相同的 seed,每次生成的随机数相同。如果不设置 seed,则每次会生成不同的随机数
其他方法:
二、ndarray的属性:
1、dtype 属性, ndarray 数组的数据类型,数据类型的种类
2、ndim 属性,数组维度的数量
3、shape 属性,数组对象的尺度,对于矩阵,即 n 行 m 列,shape 是一个元组(tuple)
4、size 属性用来保存元素的数量,相当于 shape 中 n*m 的值
5、itemsize 属性返回数组中各个元素所占用的字节数大小
6、nbytes 属性,数组所需的字节数量,其值等于数组的 size 属性值乘以itemsize 属性值
7、T 属性,数组转置
8、数的实部和虚部属性, real 和 imag 属性
9、flat 属性,返回一个 numpy.flatiter 对象,即可迭代的对象
三、ndarray的数值类型
数据类型
类型转换
1、创建时指定类型
2、使用astype强制转换类型
四、ndarray的形状变化:
1、数组形状转换
• reshape() 和 resize()
函数 resize()的作用跟 reshape()类似,但是会改变所作用的数组,相当于有 inplace=True 的效果• ravel() 和 flatten(),将多维数组转换成一维数组• 用 tuple 指定数组的形状
• 转置
前面描述了数组转置的属性(T),也可以通过 transpose() 函数来实现
2、数组堆叠
• 水平叠加 :hstack()\column_stack()
• 垂直叠加 :vstack()\row_stack()
• concatenate() 方法,通过设置 axis 的值来设置叠加方向
axis=1 时,沿水平方向叠加
axis=0 时,沿垂直方向叠加
3、数组拆分
跟数组的叠加类似,数组的拆分可以分为横向拆分、纵向拆分以及深度拆分。涉及的函数为 hsplit ()、 vsplit ()、以及 split ()• 沿横向轴拆分(axis=1)
• 沿纵向轴拆分(axis=0)
五、数组切片与索引
• 一维数组切片与索引与列表类似
• 二维数组的切片和索引
• 高维数组的切片和索引 递归读取各个索引位置
利用数组进行数据分析一、通用函数:快速的元素级数组函数
二、常用统计函数
常用的函数如下, 请注意函数在使用时需要指定 axis 轴的方向,若不指定,默认统计整个数组。 • np.sum(),返回求和三、利用数据进行数据分析
• 数组的广播,数组直接参与数据运算
当数组跟一个标量进行数学运算时,标量需要根据数组的形状进行扩展,然后执行运算。这个扩展的过程称为“广播(broadcasting)”
• 将条件逻辑表述为数组运算
numpy.where是三元表达式x if condition else y的矢量化
• 用于布尔型数组的方法
arr.any():数组中存在一个或多个true,返回true
arr.all():只有数组元素全部是true才返回true
•数组排序
np.sort()
•唯一化以及其他的集合逻辑
•文件输入输出
•线性代数
numpy.linalg 如:矩阵乘法、矩阵分解、行列式及其他方阵等