python中math计算平方根的函数_Python中Numpy和Math常用函数性能对比

numpy是如今数据分析领域离不开的Python第三方工具库,它和Python自带的math库中都有一些基础的数学函数,比如指数、对数、三角函数等。在需要使用这些函数的时候,到底该用numpy还是math,这个问题确实困扰了很多人。实现同样的功能,不同库中的函数,当然是要选择性能好的。

对于numpy和math的常见几个函数,我们用代码简单测试了一下性能,代码和结果如下:

(测试用Python版本为3.8.3,numpy版本为1.18.3)

1. log函数测试

N = 200000

f = 1.5

t0 = time.time()

for a in range(1, N):

np.log(a)

np.log(f)

t1 = time.time()

for a in range(1, N):

math.log(a)

math.log(f)

t2 = time.time()

print("Numpy log time: ", t1 - t0)

print("math log time: ", t2 - t1)

测试结果:

Numpy log time: 0.32114124298095703

math log time: 0.05388379096984863

经过200000次的重复计算,我们发现math库中的log函数所需时间是numpy的1/6左右,也就是说math在单数值计算的性能大概是numpy的6倍。

2. 三角函数测试

以cos作为测试案例:

f = 1.5

t0 = time.time()

for a in range(1, N):

np.cos(a)

np.cos(f)

t1 = time.time()

for a in range(1, N):

math.cos(a)

math.cos(f)

t2 = time.time()

print("\nNumpy cos time: ", t1 - t0)

print("math cos time: ", t2 - t1)

测试结果:

Numpy cos time: 0.29618000984191895

math cos time: 0.051862239837646484

依然是200000次的重复计算,math的性能是numpy的5.71倍。

3. exp函数测试

f = 1.5

d=5

t0 = time.time()

for a in range(1, N):

np.exp(d)

np.exp(f)

t1 = time.time()

for a in range(1, N):

math.exp(d)

math.exp(f)

t2 = time.time()

print("\nNumpy exp time: ", t1 - t0)

print("math exp time: ", t2 - t1)

测试结果:

Numpy exp time: 0.2932150363922119

math exp time: 0.048870086669921875

math的性能依然是numpy的6倍。

4. 平方根sqrt测试

f = 1.5

d=5

t0 = time.time()

for a in range(1, N):

np.sqrt(a)

np.sqrt(f)

t1 = time.time()

for a in range(1, N):

math.sqrt(a)

math.sqrt(f)

t2 = time.time()

print("\nNumpy sqrt time: ", t1 - t0)

print("math sqrt time: ", t2 - t1)

测试结果:

Numpy sqrt time: 0.30121898651123047

math sqrt time: 0.04785966873168945

math的性能大约是numpy的6.3倍。

对几个典型函数的测试可以看出,math的性能要明显优于numpy同等函数的功能。因此,对于单数值的计算在选择库函数的时候,应当优先选择Python自带的math库中的函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值