python numba教程_如何用numba加速这个python函数?

本文介绍如何使用Python的numba库来加速一个涉及复数计算的函数。通过对比原始numpy实现,展示了numba如何提升代码执行速度,并讨论了数组处理和广播法则在优化过程中的作用。
摘要由CSDN通过智能技术生成

实际上,我认为如果不深入了解数组的属性,就无法加速numba函数(是否有一些数学技巧可以更快地完成一些计算)。在

但我注意到了一个错误:例如,在numba版本中,您没有对数组进行共轭,我编辑了一些行使其更加流线型(其中一些可能只是味道)。我在适当的地方写了一些评论:@nb.njit

def twoFreq(z, source_z, num, den, matrix, e):

#Replace z with conjugate of z (otherwise the result is wrong!)

z = np.conj(z)

# Size instead of len() don't know if it actually makes a difference but it's cleaner

N1, N2 = z.size, source_z.size

# Must be zeros_like otherwise you create a float array where you want a complex one

out = np.zeros_like(z)

# I'm using python 3 so you need to replace this by xrange later

for r in range(N1):

for c in range(N2):

n, d = num[r, c], den[r, c] - 1

z1 = source_z[c] ** n

z2 = z[r] ** d

# Multiply with 0.5 instead of dividing by 2

# Work on the out ar

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值