array对象的背景:
- Numpy的核心数据结构,就叫做array就是数组,array对象可以是一维数组,也可以是多维数组;
- Python的List也可以实现相同的功能,但是array比List的优点在于性能好、包含数组元数据信息、大量的便捷函数;
- Numpy成为事实上的Scipy、Pandas、Scikit-Learn、Tensorflow、PaddlePaddle等框架的“通用底层语言”
- Numpy的array和Python的List的一个区别,是它元素必须都是同一种数据类型,比如都是数字int类型,这也是Numpy高性能的一个原因;
array本身的属性
- shape:返回一个元组,表示array的维度
- ndim:一个数字,表示array的维度的数目
- size:一个数字,表示array中所有数据元素的数目
- dtype:array中元素的数据类型
- argsort:返回排序后的索引数组
创建array的方法
- 从Python的列表List和嵌套列表创建array
- 使用预定函数arange、ones/ones_like、zeros/zeros_like、empty/empty_like、full/full_like、eye等函数创建
- arange([start],stop[,step,]dtype=None)
- ones(shape,dtype=None,order='C') 生成一个全都是1的数组
- ones_like(shape,dtype='float',order='C') 生成一个形状相同与shape的数组,元素都是1
- full(shape,fill_value,dtype=None)
- 生成随机数的np.random模块构建
- np,random.rand(4,2) 生成一个shape为(4,2)的均匀分布数组,元素是0-1之前的随机数
- np.random.randn() 生成指定维度的数组,与rand不同的是,该数组元素符合正态分布
- np.random.randint(low='',high=None,size=None,dtype=int)
- np.random.random(size=(,)) 返回[0.0,1.0]之间的随机数
- np.random.shuffle(arr)
- np.random.choice()
array本身支持的大量操作和函数
- 直接逐元素的加减乘除等算数操作
- 更好用的面向多维的数组索引
- 求sum/mean等聚合函数
- 线性代数函数,比如求解逆矩阵、求解方程组
array三种索引方式
- 基础索引
arr[2,3],arr[:2,2:4] - 神奇索引
arr[[0,2],[3,4]],arr[:,[0,3,4]] - 布尔索引,根据条件判定true还false,再根据true还是false选择元素
数学统计函数
数组升维操作
- np.newaxis 相当于None
- np.expend_dim(arr,axis) 和newaxis实现相同的功能,在arr的axis轴添加维度
- np.reshape(arr,shape)
数组合并操作
- np.concatenate(array_list, axis=0/1):沿着指定axis进行数组的合并
- np.vstack或者np.row_stack(array_list):垂直vertically、按行row wise进行数据合并
- np.hstack或者np.column_stack(array_list):水平horizontally、按列column wise进行数据合并
网友评论