NumPy数组在数值运算方面的效率优于Python提供的list容器。使用NumPy可以在代码中省去很多循环语句,因此其代码比等价的Python代码更为简洁。
实践:向量加法
假设我们需要对两个向量a和b做加法。
以下的纯Python代码可以解决上述问题:
def pythonsum(n):
a = range(n)
b = range(n)
c = []
for i in range(len(a)):
a = i ** 2
b = i ** 3
c.append(a + b)
return c
以下是使用NumPy的代码,它同样能够解决问题:
def numpysum(n):a = np.arange(n) ** 2
b = np.arange(n) ** 3
c = a + b
return c
numpysum()函数中没有使用for循环。同时,我们使用NumPy中的arange函数来创建包含0~n的整数的NumPy数组。代码中的arange函数前面有一个前缀numpy,表明该函数是从NumPy模块导入的。
让我们来看看纯Python代码和NumPy代码是否得到相同的结果:
import sysfrom datetime import datetime
import numpy as np#省略上面两处代码size = int(sys.argv[1])
start = datetime.now()
c = pythonsum(size)
delta = datetime.now() - start
print "The last 2 elements of the sum", c[-2:]
print "PythonSum elapsed time in microseconds", delta.microseconds
start = datetime.now()
c = numpysum(size)
delta = datetime.now() - start
print "The last 2 elements of the sum", c[-2:]
print "NumPySum elapsed time in microseconds", delta.microseconds