首页 > NumPy 阅读数:66

NumPy一维数组相加

在科学计算中,常常会遇到数组和矩阵的计算,如有两个一维数组 x 和 y,其中,x 的值为 0~10 的整数,y 的值为 0~10 的整数的平方,需要将 x 与 y 的一维数组相加。

而实现一维数组相加的方法有两种,第 1 种方法是利用 Python 的循环语句来实现两个一维数组相加,第 2 种方法是利用 NumPy 中的 arange 函数来创建包含 0~n 的整数的 NumPy 数组,然后用所创建的 NumPy 数组直接进行计算。

1) 利用 Python 的循环语句来实现两个一维数组相加的示例代码 example1 如下。
# -*- coding: UTF-8 -*-
def python_sum(n):
     #range函数产生包含0至n的整数元组,用list函数转换成列表
     x = list(range(n))
     y = list(range(n))
     z = []
     for i in range(len(x)):
          y[i] = i**2
          z.append(x[i]+y[i])
     return z

2) 利用 NumPy 实现两个一维数组相加的示例代码 example2 如下。
# -*- coding: UTF-8 -*-
import numpy as np
def numpy_sum(n):
     x =np.arange(n)            #arange函数创建包含0至n的整数数组
     y = np.arange(n)**2
     z = x + y
     return z

注意:numpy_sum() 函数中没有使用 for 循环,在代码中通过 import numpy as np 导入 NumPy 模块,并且命名该模块别名为 np,在 arange() 函数前面有一个前缀 np,表明该函数是从 NumPy 模块导入的。

观察这两个函数的代码,发现 numpy_sum() 函数代码要比 python_sum() 函数代码简洁,而且通过测试可证明 NumPy 在数组操作上的效率优于用 Python 基本数据结构和流程控制语句编写的代码。

测试示例代码如下。
#测试python_sum函数的执行时间
from datetime import datetime
n=1000000
start_time = datetime.now()
python_sum(n)
time_interval = datetime.now()-start_tim
print(time_interval)
#测试numpy_sum函数的执行时间
n=1000000
start_time = datetime.now()
b = numpy_sum(n)
time_interval = datetime.now()-start_tim
print(time_interval)

将 example1、example2 和测试示例这 3 段代码组合成一个程序代码,运行后发现 numpy_sum() 函数的执行速度比 python_sum() 函数的执行速度快 10 倍,由此可见,NumPy 在数组操作方面有很大优势。