NumPy
是一个基础性的Python库,为我们提供了常用的数值数组和函数
安装
$ sudo apt-get install python-numpy
一个简单的应用
假设要对向量a和b进行求和,向量a存放的是整数0到n-1的2次幂
使用纯python代码
def pythonsum(n):
a = list(range(n))
b = list(range(n))
c = []
for i in range(len(a)):
a[i] = i**2
b[i] = i**3
c.append(a[i]+b[i])
return c
使用NumPy解决
import numpy as np
def numpysum(n):
a = np.arange(n)
b = np.arange(n)
c = a + b
return chnb
比较这两个方法的耗时
In [1]: import sys
from datetime import datetime
import numpy as np
def pythonsum(n):
a = list(range(n))
b = list(range(n))
c = []
for i in range(len(a)):
a[i] = i**2
b[i] = i**3
c.append(a[i]+b[i])
return c
def numpysum(n):
a = np.arange(n)**2
b = np.arange(n)**3
c = a+b
return c
size = 1000
start = datetime.now()
c = pythonsum(size)
dalta = datetime.now()-start
print('最后两次的值',c[-2:])
print('pythonsum耗时',dalta.microseconds)
start = datetime.now()
c = numpysum(size)
dalta = datetime.now()-start
print('最后两次的值',c[-2:])
print('numpysum耗时',dalta.microseconds)
Out[1]: 最后两次的值 [995007996, 998001000]
pythonsum耗时 878
最后两次的值 [995007996 998001000]
numpysum耗时 222
显而易见,NumPy的速度要比等价的python代码快得多。无论是否使用NumPy数组,计算结果都是相同的。不过,结果的显示形式还是有所区别的,numpysum()给出的结果不包含逗号,因为我们处理的不是Python列表,而是NumPy数组
结束语
如果您对这篇文章有什么意见或者建议,请评论与我讨论.
如果您觉得还不错的话~可以点个喜欢鼓励我哦.
如果您想和我一起学习,请毫不吝啬的私信我吧~