Numpy:Python,快叫我一声“爸爸”
Numpy会成为下一个Python吗?
Python是目前世界上最流行的统计计算语言之一。
有趣之处在于,开发者从未想过将Python设计为一种统计语言。尽管Python确实具有一些函数特性,例如:无类计算,但它很大程度上还是一种面向对象的语言。与R这样的传统统计语言相比,Python更类似于如C ++这样的语言。因此,其实Python的代码库最初并不是为数据科学而创建的。
R,Julia甚至Go之类的语言通常实现了用来进行线性代数运算的基本函数和操作数,而Python基础库没有这类函数。如果你使用Python进行线性代数运算已有一段时间,很可能在代码中声明这个经典语句:
import numpy as np
Numpy将Python的统计能力从20%提升到了100%。对数据科学家来说,避免使用Numpy很难。
Numpy不仅具有Python语言缺少的线性代数功能,还具备许多令工作事半功倍的数学和数据管理特性。
不仅如此,Pandas(Python的数据表管理库)是基于Numpy构建的。这使得二者的集成几乎是无缝的。Numpy和Pandas稳定、强大的代码库使数据科学任务变得流畅。这就是Python在数据科学领域领先于许多其他语言的全部原因。很简单,也十分易于理解。
鉴于大多数高级语言都实现了各自的线性代数函数,Python更底层一些且需要的操作数或函数不止一个似乎有些奇怪。
比较
若没有Numpy,Python该如何在数组之间进行数学运算呢?
它又如何与当前其他统计语言一争高下呢?实际上,Python的数组迭代能力很棒。zip()函数可以同时遍历两个列表。
array =[] for f, bin zip(array1, array2): res = f * b array.append(res)
尽管这看起来不难,但把Python与另一种语言(例如R或Julia)进行比较,就能发现使用一种获得两个数组的乘积的更简单的方法。
例如,在R中:
array<- array1 * array2
R使这个操作变得容易;可以将星号操作数用于数组乘法以及整数和双精度数的乘法。
在Julia中:
array =array1 .* array2
在Julia中,简单地在星号前面放置一个点,使其成为“.*”,就能将两个数组相乘。
随着Python越发成为一种统计语言,观望Numpy是否能够进入基础语言行列会是一件趣事。
显然,随着Python在统计中的应用会影响其增加更多函数特性的可能性。尽管Numpy定会继续提供许多工具并提升处理困难任务的能力,我还是无法想象一个不需要指针的基本语言,以及Numpy会进行一些弃用。可能很多机器都安装了像Numpy一样的工具,但需要一个包来在一行中进行数组乘法,这的确显得有些零散和奇怪。
尽管Numpy的某些功能是否已纳入Python基础库影响不大,Numpy也已被视为Python的扩展,我还是觉得这个想法很有趣。