神操作、两行代码,提速 13 倍—让 Python 飞一般的感觉

Python 本身是一门运行较慢的语言,因此对于计算场景,最好的优化方式就是优化代码写法。你可以使用现有的科学计算库:比如 Numpy 和 Scipy。但如果想要在不使用低级语言(如 CPython、Rust 等)实现扩展的前提下实现一个新的算法时,该如何做呢?

对于某些特定的、尤其是针对数组的计算场景,Numba 可以显著加快代码的运行速度。在使用时,我们有时候需要调整一下原始代码,而有时候却又不需要做任何改动。当它真正起到作用时,效果将会非常明显。

在本篇文章中,我们会谈及以下几方面:

  • 为什么 有时候单独使用 Numpy 是不够的
  • Numba 的基础使用方式
  • Numba 是如何在很高的层次上来对你的代码运行造成影响的

Numpy ”爱莫能助“的时刻

假设你想要将一个非常大的数组转变为按递增顺序排序:很好理解,就是将元素按值的大小升序排列,如:

[1, 2, 1, 3, 3, 5, 4, 6] → [1, 2, 2, 3, 3, 5, 5, 6]

以下是一个简单的就地转换方式:

def monotonically_increasing(a):
    max_value = 0
    for i in range(len(a)):
        if a[i] > max_value:
            max_value = a[i]
        a[i] = max_value

Numpy 运行很快,是因为它可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值