15

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

 4 years ago
source link: https://developer.51cto.com/art/201912/608646.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

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

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在数据科学中的使用越来越广泛,其可能会为适应统计任务而新增一些特性。

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

【编辑推荐】

【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK