python加速器numba使用详解

 更新时间:2023年02月02日 09:32:38   作者:_刘文凯_  
本文主要介绍了python加速器numba使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

python的一个加速器包,这里不讲原理,只讲应用过程,以及给出几个小例子,直接写就行了; 另外还给出了numba如何定义使用List

1、最简单的使用

当输出返回值为整数或浮点数时:

from numba import jit
@jit(nopython=True)
def f(x, y):
    return x+y

if __name__ == '__main__':
    a = 1
    b = 1
    print(f(a,b))

解释:

使用装饰器,另外,nopython=True是防止numba自动更改加速模式,也就是使用nopython。

上述代码等价于:

from numba import njit
@njit  # 也就是jit(nopython=True)
def f(x, y):
    return x+y

if __name__ == '__main__':
    a = 1
    b = 1
    print(f(a,b))

2、进阶

当输出返回值为“不同类型值”时:

装饰器使用:generated_jit

from numba import generated_jit, typed

@generated_jit(nopython=True)
def f2(x):
    if x==1:
        return lambda x: x+1
    else:
        return lambda x: [1,2]

if __name__ == '__main__':
    a = 1
    print(f2(a))

当进行矩阵或向量运算时:

使用装饰器:vectorize

from numba import vectorize, float64
import numpy as np

@vectorize([float64(float64, float64)])  # 注意有中括号
def f(x, y):
    return x + y

if __name__ == '__main__':
    a = np.array([1,2])
    b = np.array([2,2])
    print(f(a,b))

补充

在numba内定义列表:

import numpy as np
import time
NUM = 160
from numba import jit
from numba.typed import List

a = List()
a.append(1) # 同样需要指定数据类型,塞个1,数据类型就是int

@jit(nopython=True)
def f(a):
    for i in range(NUM):
        a.append(i)

if __name__ == '__main__':
   for i in range(5):
    start = time.time()
    f(a)
    print(time.time()-start)

到此这篇关于python加速器numba使用详解的文章就介绍到这了,更多相关python加速器numba内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pandas如何灵活增加新的空字段

    pandas如何灵活增加新的空字段

    这篇文章主要介绍了pandas如何灵活增加新的空字段问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python可视化学习之seaborn绘制矩阵图详解

    Python可视化学习之seaborn绘制矩阵图详解

    矩阵图即用一张图绘制多个变量之间的关系,数据挖掘中常用于初期数据探索。本文介绍python中seaborn.pairplot和seaborn.PairGrid绘制矩阵图,需要的可以参考一下
    2022-02-02
  • 关于SSD目标检测模型的人脸口罩识别

    关于SSD目标检测模型的人脸口罩识别

    这篇文章主要介绍了关于SSD目标检测模型的人脸口罩识别问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 一文详解如何在Python中实现switch语句

    一文详解如何在Python中实现switch语句

    这篇文章主要给大家介绍了关于如何在Python中实现switch语句的相关资料,今天在学习python的过程中,发现python没有switch这个语法,所以这里给大家总结下,需要的朋友可以参考下
    2023-09-09
  • Python中的并发处理之asyncio包使用的详解

    Python中的并发处理之asyncio包使用的详解

    本篇文章主要介绍了Python中的并发处理之asyncio包使用的详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Python AI编程助手AICodeHelper使用示例

    Python AI编程助手AICodeHelper使用示例

    这篇文章主要介绍了Python AI编程助手AICodeHelper使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • Python实现打砖块小游戏代码实例

    Python实现打砖块小游戏代码实例

    这篇文章主要介绍了Python打砖块小游戏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • python 实现长数据完整打印方案

    python 实现长数据完整打印方案

    这篇文章主要介绍了python 实现长数据完整打印方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python3利用pathlib替代os.path的方法实例

    python3利用pathlib替代os.path的方法实例

    os.path 模块始终是适合Python运行的操作系统的路径模块,因此可用于本地路径,下面这篇文章主要给大家介绍了关于python3利用pathlib替代os.path的相关资料,需要的朋友可以参考下
    2022-04-04
  • 浅析关于Keras的安装(pycharm)和初步理解

    浅析关于Keras的安装(pycharm)和初步理解

    Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。这篇文章给大家介绍Keras的安装(pycharm)和初步理解,感兴趣的朋友一起看看吧
    2020-10-10

最新评论