|
|
51CTO旗下网站
|
|
移动端

Numpy:Python,快叫我一声“爸爸”

Numpy会成为下一个Python吗?Python是目前世界上最流行的统计计算语言之一。有趣之处在于,开发者从未想过将Python设计为一种统计语言。

作者:读芯术来源:今日头条|2019-12-30 14:34

Numpy会成为下一个Python吗?

Python是目前世界上最流行的统计计算语言之一。

有趣之处在于,开发者从未想过将Python设计为一种统计语言。尽管Python确实具有一些函数特性,例如:无类计算,但它很大程度上还是一种面向对象的语言。与R这样的传统统计语言相比,Python更类似于如C ++这样的语言。因此,其实Python的代码库最初并不是为数据科学而创建的。

R,Julia甚至Go之类的语言通常实现了用来进行线性代数运算的基本函数和操作数,而Python基础库没有这类函数。如果你使用Python进行线性代数运算已有一段时间,很可能在代码中声明这个经典语句:

  1. import numpy as np 

Numpy将Python的统计能力从20%提升到了100%。对数据科学家来说,避免使用Numpy很难。

Numpy:Python,快叫我一声“爸爸”

Numpy不仅具有Python语言缺少的线性代数功能,还具备许多令工作事半功倍的数学和数据管理特性。

不仅如此,Pandas(Python的数据表管理库)是基于Numpy构建的。这使得二者的集成几乎是无缝的。Numpy和Pandas稳定、强大的代码库使数据科学任务变得流畅。这就是Python在数据科学领域领先于许多其他语言的全部原因。很简单,也十分易于理解。

鉴于大多数高级语言都实现了各自的线性代数函数,Python更底层一些且需要的操作数或函数不止一个似乎有些奇怪。

比较

若没有Numpy,Python该如何在数组之间进行数学运算呢?

它又如何与当前其他统计语言一争高下呢?实际上,Python的数组迭代能力很棒。zip()函数可以同时遍历两个列表。

  1. array =[]  
  2. for f, bin zip(array1, array2):  
  3. res = f * b  
  4. array.append(res) 

尽管这看起来不难,但把Python与另一种语言(例如R或Julia)进行比较,就能发现使用一种获得两个数组的乘积的更简单的方法。

例如,在R中:

  1. array<- array1 * array2 

R使这个操作变得容易;可以将星号操作数用于数组乘法以及整数和双精度数的乘法。

在Julia中:

  1. array =array1 .* array2 

在Julia中,简单地在星号前面放置一个点,使其成为“.*”,就能将两个数组相乘。

随着Python越发成为一种统计语言,观望Numpy是否能够进入基础语言行列会是一件趣事。

显然,随着Python在统计中的应用会影响其增加更多函数特性的可能性。尽管Numpy定会继续提供许多工具并提升处理困难任务的能力,我还是无法想象一个不需要指针的基本语言,以及Numpy会进行一些弃用。可能很多机器都安装了像Numpy一样的工具,但需要一个包来在一行中进行数组乘法,这的确显得有些零散和奇怪。

尽管Numpy的某些功能是否已纳入Python基础库影响不大,Numpy也已被视为Python的扩展,我还是觉得这个想法很有趣。

实际上,这可能性很大,且当下就有望实现。虽然这个想法合理,但也有充足的理由不予采纳。特别考虑到,随着Python在数据科学中的使用越来越广泛,其可能会为适应统计任务而新增一些特性。

以后究竟会如何发展,我们还且拭目以待……

【编辑推荐】

  1. Python中如何将一个类方法变为多个方法?
  2. Python趣味打怪:60秒学会一个例子,147段代码助你从入门到大师
  3. Python爬虫解析网页的4种方式 值得收藏
  4. 2020年入门Python,这7本书一定要看!
  5. 5 个越早知道越好的 Python 特性
【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

云架构师修炼手册

云架构师修炼手册

云架构师的必备技能
共3章 | Allen在路上

18人订阅学习

Devops之监控神器Prometheus

Devops之监控神器Prometheus

监控主流
共22章 | 小罗ge11

169人订阅学习

手把手玩转Elasticsearch

手把手玩转Elasticsearch

Chandler_珏瑜
共20章 | Chandler_珏瑜

80人订阅学习

读 书 +更多

网络工程师必读——网络系统设计

本书是一本真正意义上的网络系统设计图书,从网络系统设计角度全面介绍了整个网络系统设计的思路和方法,而不是像传统网络集成类图书那样主...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微