Ŀ¼
1.计算numpy数组各个数值的双曲正切值。
(1)导入numpy、numba及其编译器
import numpy as np import numba from numba import jit
(2)传入numba装饰器jit,编写函数
# nopython = True 选项要求完全编译该函数(以便完全删除Python解释器调用),否则会引发异常 @jit(nopython=True) # jit,numba装饰器中的一种 def go_fast2(a): # 首次调用时,函数被编译为机器代码 trace = 0 # 假设输入变量是numpy数组 for i in range(a.shape[0]): # Numba 擅长处理循环 trace += np.tanh(a[i, i]) # numba喜欢numpy函数 return a + trace # numba喜欢numpy广播
(3)给函数传递实参
# 因为函数要求传入的参数是nunpy数组 x = np.arange(100).reshape(10, 10) # 执行函数 go_fast(x)
(4)经numba加速的函数执行时间
% timeit go_fast(x)
(5)结果输出
快了40倍。
2.nunba对for循环的加速
(1)代码
# 普通函数 def go_fast1(): # 首次调用时,函数被编译为机器代码 x = 0 for i in np.arange(5000): x += i return x # nopython = True选项要求完全编译该函数(以便完全删除Python解释器调用),否则会引发异常 @jit(nopython=True) # jit,numba装饰器中的一种 def go_fast2(): # 首次调用时,函数被编译为机器代码 x = 0 for i in np.arange(5000): x += i return x
(2)结果输出
快了200倍。
来源:博客园
作者:一只帅气的IT小昂
链接:https://www.cnblogs.com/ITXiaoAng/p/11704278.html