资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

在python中numpy.sum的性能好不好

今天小编给大家分享一下在python中numpy.sum的性能好不好的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

专注于为中小企业提供网站建设、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业福鼎免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

首先我们应该知道np.sum是用C语言写的矢量计算,应用场景为规模较大的numpy数组求和。

代码:

import numpy as np
import time

data_0 = []
data_1 = []
for _ in range(1000000):
    tmp = np.random.randint(100, size=(6,))
    data_0.append(tmp)
    data_1.append(tmp.tolist())


a_time = time.time()
for d in data_0:
    x=np.sum(d)
b_time = time.time()
print(b_time-a_time)


a_time = time.time()
for a,b,c,d,e,f in data_1:
    x=a+b+c+d+e+f
b_time = time.time()
print(b_time-a_time)

从上面的代码中我们可以知道,第一个运算是使用numpy.sum对长度为6的numpy数组求和;第二个运算是使用python原生的加和运算。

运算结果:

在python中numpy.sum的性能好不好

在python中numpy.sum的性能好不好

结果分析:

从上面的结果可以看到,在对小规模数组求和时,numpy.sum求和计算的性能是没有python原生计算性能高的,而且这个差距还很大,在上面的结果中相差了10多倍。由此我们可以知道,在对小规模数组求和时,使用python原生加和运算的性能要优于numpy.sum的。

========================================

numpy.sum的性能只有对较大规模数组求和才有很好体现,为此我们再加一个测试,对数组长度为10000的数组求和。

代码:

import numpy as np
import time

data_0 = []
data_1 = []
for _ in range(100000):
    tmp = np.random.randint(100, size=(10000,))
    data_0.append(tmp)
    data_1.append(tmp.tolist())


a_time = time.time()
for d in data_0:
    x=np.sum(d)
b_time = time.time()
print(b_time-a_time)


a_time = time.time()
for data in data_1:
    s = 0
    for d in data:
        s += d 
b_time = time.time()
print(b_time-a_time)

运行结果:

在python中numpy.sum的性能好不好

在python中numpy.sum的性能好不好

结果分析:

通过上面的测试,可以知道在对规模为10000的数组求和时,numpy.sum的性能是python原生的63倍;而在上面对长度为6的数组求和时,python原生的性能是numpy.sum的20倍。这个结果更加证明了numpy.sum只适合对大规模数组求和的情况,否则它的性能会原差于python原生。

以上就是“在python中numpy.sum的性能好不好”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注创新互联行业资讯频道。


网页名称:在python中numpy.sum的性能好不好
网页链接:http://cdkjz.cn/article/ihpedd.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220