首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Array programming with NumPy

Array programming with NumPy

作者头像
气象学家
发布2020-11-06 14:39:42
发布2020-11-06 14:39:42
8870
举报
文章被收录于专栏:气象学家气象学家

Array programming with NumPy

Charles et.al. 2020 in Nature

NumPy是Python中一个主要的数组编程库,可进行矢量、矩阵和高维数组的数据计算,在物理、化学和天文学等领域中发挥着重要作用。NumPy库在兼顾了Numeric和Numarray二者优点的基础上,于2005年发布,并在其后15年里支撑了Python所有库的科学和数组计算。

这是一篇Nature上的综述论文,罕见的对一门编程语言库进行了专门综述,足可见其重要性。这篇文章中NumPy开发者全面地回顾了Numpy的历史,介绍了NumPy的基本设计理念与用法、以及围绕NumPy建立的庞大的Python科学计算生态系统。

综述的第一部分介绍了NumPy的基本设计与用法:讲述了(1)数组基本概念,包括数据、计算机中数据存储形式、形状(Shape)和步幅(Step)等信息;(2)NumPy中元素索引的用法,即通过索引能返回数组中满足特定条件的单个元素、子数组或元素;(3)NumPy强大的计算功能以及数组的向量化计算函数,如sum、mean和maximum等,以及 “广播”(broadcasting)规则。此外,NumPy也支持一些其他功能,如创建(create)、重塑(reshape)、连接(concatenate)和填充(paddy)数组,数据搜索整理和读写文件等功能,生成随机数等。

综述的第二部分介绍基于NumPy形成的Python科学计算生态系统。Python是应用非常广泛的一种开源编程语言,虽然NumPy不是Python标准库的一部分,但它们之间的耦合却非常深入。例如常用的Python可视化作图Matplotlib库和科学计算SciPy库都与NumPy紧密结合。

不同研究领域也开发出了大型复杂的Python库,如用于绘制出第一张黑洞图像的eht-imaging库,就是在NumPy、SciPy、NetworkX、Astropy和Matplotlib等的支持下实现的。

基于数组编程和相关库创建出来交互环境(IPython和Jupyter)是探索式数据分析(EDA)的重要工具。NumPy已经开发出一系列时间测试工具与独特的软件工程文化,不仅服务于NumPy自身发展,也服务于相关科学库与软件的构建,如Astropy。

目前大数据、人工智能和机器学习的迅猛发展也促进了Python的发展和传播,被越来越多的人熟知并重视,NumPy生态系统也成为世界各地社区会议和研讨会的焦点。

综述第三部分介绍了NumPy的适用性和交互性。NumPy能运行在从小到嵌入式设备到大到超级计算机的各种机器上,并且与性能接近于编译语言。但现今的科学数据对大数据的分布式存储需求,以及面向深度学习和人工智能应用的特殊硬件的出现,如GPU(图像处理单元),TPUs(张量处理单元)和FPGAS(现场可编程门数组),NumPy的内存数据模型无法直接利用这些这种存储和专用硬件。

为了填补这一技术缺口,很多新的数组编程工具建立了各自的数组工具,PyTorch、Tensorflow等,使其能够以分布式方式在CPU和GPU上运行。还有SciPy和PyData、Dask等。正是因为这些库的开发充分利用了NumPy的API,使得NumPy操作在其他基于NumPy的库中同样适用,这极大增强了这些不同库之间的兼容性与通用性。

综述讨论部分中提到了几点内容,先是指出由于NumPy的简单内存模型,使得它能很容易适配Cython、Numba和Pythran等语言,这些语言能极大地突破Python原有的瓶颈。再次强调了NumPy的开源性,并希望更多人加入到NumPy开发社区。在不断的发展过程中,NumPy已不再只是一个小型社区项目了,而是逐渐发展成科学计算的核心基础设施。最后作者提出了NumPy面临的一些挑战,如针对新硬件设备的开发,科学数据规模的扩大以及新一代编程语言出现的挑战,如Rust、Julia和LLVM。

注1:论文所有作者都为NumPy项目贡献了大量代码,文档和/或专业知识。

Edited by 地学新文献

地学新文献语:推荐所有的Python用户与学习者都来读一读这个文章,感谢Numpy团队对科学计算的无私贡献,没有他们今天都不知如何搞科研了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气象学家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档