学习Numpy,看这篇文章就够啦

导读:在数据分析当中 , Python用到最多的第三方库就是Numpy 。本文内容是「大数据DT」内容合伙人王皓阅读学习《Python 3智能数据分析快速入门》过后的思考和补充 , 结合这本书一起学习 , 效果更佳 。
作者:王皓
来源:华章科技
学习Numpy,看这篇文章就够啦

文章插图
 
01 ndarray创建与索引在学习Numpy之前我们需要了解一个概念:数组维数 。
在计算机科学中 , 数组数据结构(array data structure) , 简称数组(Array) , 是由相同类型的元素的集合所组成的数据结构 , 分配一块连续的内存来存储 。按数组维数分类可分为:一维数组、二维数组、多维数组(N维数组) 。
学习Numpy,看这篇文章就够啦

文章插图
 
Numpy是最著名的 Python库之一 , 常用于高性能计算 。Numpy提供了两种基本对象:ndarray和ufunc 。
NumPy作为一个开源的Python科学计算基础库 , 包含:一个强大的N维数组对象ndarray ;广播功能函数 ;整合C/C++/Fortran代码的工具 ;线性代数、傅里叶变换、随机数生成等功能 。NumPy是SciPy、Pandas等数据处理或科学计算库的基础 。
当然这里就有一个问题出现了 , Python已有列表类型 , 为什么需要一个数组对象(类型)?
因为:
  1. 数组对象可以去掉元素间运算所需的循环 , 使一维向量更像单个数据
  2. 设置专门的数组对象 , 经过优化 , 可以提升这类应用的运算速度 , 在科学计算中 , 一个维度所有数据的类型往往相同
  3. 数组对象采用相同的数据类型 , 有助于节省运算和存储空间
但是Python内置的array模块既不支持多维数组功能 , 又没有配套对应的计算函数 , 所以基于Numpy的ndarray在很大程度上改善了Python内置array模块的不足 , 将重点介绍ndarray的创建与索引 。
1. 创建ndarray对象
1)ndarray数据类型
在《Python 3智能数据分析快速入门》该节内容中 , 作者罗列了15种数据类型 , 其中实数数据类型13种 。这些实数数据类型之间可以互相转换 。
这时有人会问 , 为什么要支持这么多种数据类型?是因为对比Python语法来说仅支持整数、浮点数和复数3种类型 , 但是当科学计算涉及数据较多 , 对存储和性能都有较高要求 , 所以对数据类型进行精细定义 , 有助于NumPy合理使用存储空间并优化性能和程序员对程序规模有合理评估 。
对于15种数据类型在这里笔者将不赘述 , 书上有详细的解释以及案例示范 。
2)ndarray创建
在《Python 3智能数据分析快速入门》该节内容中 , 作者介绍了两种创建ndarray的方法:
  • 使用array函数创建数ndarray
  • 使用arange函数创建数ndarray
这里笔者再补充四种方法并整理出来:
  1. 从Python中的列表、元组等类型创建ndarray数组
  2. 使用NumPy中函数创建ndarray数组 , 如:arange, ones, zeros等
  3. 从字节流(raw bytes)中创建ndarray数组
  4. 从文件中读取特定格式 , 创建ndarray数组
对于方法②再补充5个常用函数:
  • np.full(shape,val):根据shape生成一个数组 , 每个元素值都是val
  • np.ones_like(a):根据数组a的形状生成一个全1数组
  • np.zeros_like(a):根据数组a的形状生成一个全0数组
  • np.full_like(a,val):根据数组a的形状生成一个数组 , 每个元素值都是val
  • np.concatenate():将两个或多个数组合并成一个新的数组
3)随机数
Numpy提供了强大的生成随机数的功能 , 使用随机数也能创建ndarray 。基本语法格式:numpy.random.×××()。在《Python 3智能数据分析快速入门》该节内容中 , 作者罗列了13个函数及其说明 , 笔者再补充2个函数:
  • choice(a[,size,replace,p]):从一维数组a中以概率p抽取元素 , 形成size形状新数组 replace表示是否可以重用元素 , 默认为False
  • poisson(lam,size):产生具有泊松分布的数组,lam随机事件发生率,size形状
2. ndarray的索引和切片
索引与切片是ndarray使用频率最高的操作 。相较于list , ndarray索引与切片在功能上更加丰富 , 在形式上更多样 。ndarray的高效率在很大程度上需归功于其索引的易用性 。


推荐阅读