python numba讲解

匿名 (未验证) 提交于 2019-12-02 22:51:30

Ŀ¼





















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倍。


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!