Python中NumPy,SciPy,Pandas这些库的区别?



公众号后台回复“图书“,了解更多号主新书内容
     作者:pythonic生物人
     来源:pythonic生物人

1、NumPy简述

  • NumPy发展史:NumPy的历史可以追溯到90年代中期,它的前身为Numeric(用C语言编写,主要用来调取C++中应用)和Numarray(用于处理高维数组,可灵活的索引、数据类型变换、广播等),2005年出现的NumPy作为继承者,吸取了Numeric中丰富的C API及Numarray的高维数组处理能力,成为Python科学计算生态系统的基础。

  • NumPy的部分功能如下:

摘自《Python for Data Analysis》

  1. ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。

  2. 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。

  3. 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。

  4. 线性代数、随机数生成以及傅里叶变换功能。

  5. 用于集成由C、C++、Fortran等语言编写的代码的A C API。

  6. 由于NumPy提供了一个简单易用的C API,因此很容易将数据传递给由低级语言编写的外部库,外部库也能以NumPy数组的形式将数据返回给Python。这个功能使Python成为一种包装C/C++/Fortran历史代码库的选择,并使被包装库拥有一个动态的、易用的接口。

  • NumPy本身并没有提供多么高级的数据分析功能,理解NumPy数组以及面向数组的计算将有助于你更加高效地使用依赖NumPy的Python科学计算库,如Biopython、SciPy、statsmodels、scikit-learn、Pandas等等。

  • NumPy之于数值计算特别重要的原因之一,是因为它可以高效处理大数组的数据, 这是因为:

摘自《Python for Data Analysis》

  1. NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。

  2. NumPy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期 工作。比起Python的内置序列,NumPy数组使用的内存更少。

  3. NumPy可以在整个数组上执行复杂的计算,而不需要Python的for循环。

实例证实NumPy的高效


以下来自文献

2、NumPy数组ndarray

  • a, The NumPy array data structure and its associated metadata fields. -数组结构:数据、数据类型、维度、内存中向前移动的字节数

  • b, Indexing an array with slices and steps. These operations return a ‘view’ of the original data. -数组索引

  • c, Indexing an array with masks, scalar coordinates or other arrays, so that it returns a ‘copy’ of the original data. In the bottom example, an array is indexed with other arrays; this broadcasts the indexing arguments before performing the lookup. 使用其他数组索引数组

  • d, Vectorization efficiently applies operations to groups of elements.-数组矢量化

  • e, Broadcasting in the multiplication of two-dimensional arrays. -数组广播

  • f, Reduction operations act along one or more axes. In this example, an array is summed along select axes to produce a vector, or along two axes consecutively to produce a scalar. -数组按行按列运算

  • g, Example NumPy code, illustrating some of these concepts. -以上概念的example


3、哪些Python科学计算生态系统依赖NumPy?

  • 下图非常清晰,NumPy在生物学(Biopython)、物理、化学、天文学、地球科学、心理学、材料科学、工程学、金融和经济学等领域的研究分析中都起着至关重要的作用。


4、深度学习和人工智能时代NumPy如何突围?

  • NumPy 在 CPU 上性能超级nice,接近编译语言【如像C/C++等】;

  • 但是,随着深度学习和人工智能的出现,加速需求催生了专用加速器硬件【如 GPU、TPU 和 FPGA】,由于 NumPy 具有的内存内数据模型,它无法直接使用这类存储和专用硬件。

  • NumPy社区为了应对挑战,开发出了NumPy array protocols,包含诸多函数【如 Dask、CuPy、PyData/Sparse等】以协调外部数组对象对NumPy的调用。


5、NumPy的下一个十年

  • 新的设备将被开发出来,现有的专用硬件也不断发展,NumPy如何兼容?

  • 科学数据规模将继续扩大;

  • 新一代语言,如Rust、Julia和LLVM、解释器和编译器,将创造新的概念和数据结构。

参考资料

https://www.nature.com/articles/s41586-020-2649-2
Harris CR, Millman KJ, van der Walt SJ, et al. Array programming with NumPy. Nature. 2020;585(7825):357-362. doi:10.1038/s41586-020-2649-2

◆ ◆ ◆  ◆ ◆麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:






数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值