numpy sum,numpy与python
首先要知道np.sum是用C语言写的向量计算,应用场景是对大规模numpy数组求和。本文想说的是numpy.sum在对较小的numpy数组求和时是否也会有不错的表现?
代码:
将numpy作为np导入
导入时间
data_0=[]
data_1=[]
for _ in范围(1000000):
tmp=np.random.randint(100,size=(6,))
data_0.append(tmp)
data_1.append(tmp.tolist())
a_time=time.time()
对于data_0中的d:
x=np.sum(d)
b_time=time.time()
打印(b_time-a_time)
a_time=time.time()
对于data_1中的a、b、c、d、e、f:
x=a b c d e f
b_time=time.time()
打印(b_time-a_time)
从上面的代码我们可以知道,第一个操作是使用numpy.sum对长度为6的numpy数组求和;第二个操作是使用python的原生加法操作。
操作结果:
结果分析:
从上面的结果可以看出,在对小规模数组求和时,numpy.sum求和的性能没有python原生计算高,而且这个差距还是很大的,上面的结果相差10倍以上。由此可知,在对小规模数组求和时,python原生加法运算的性能优于numpy.sum
========================================
numpy.sum的性能只有对大规模数组求和才能得到很好的体现。因此,我们添加了另一个测试来对数组长度为10,000的数组求和。
代码:
将numpy作为np导入
导入时间
data_0=[]
data_1=[]
for _ in范围(100000):
tmp=np.random.randint(100,size=(10000,))
data_0.append(tmp)
data_1.append(tmp.tolist())
a_time=time.time()
对于data_0中的d:
x=np.sum(d)
b_time=time.time()
打印(b_time-a_time)
a_time=time.time()
对于data_1中的数据:
s=0
对于数据中的d:
s=d
b_time=time.time()
打印(b_time-a_time)
运行结果:
结果分析:
通过上面的测试我们可以知道,numpy.sum在对大小为10000的数组求和时,性能是python native的63倍;另一方面,当对长度为6的数组求和时,python的本机性能是numpy.sum的20倍。这个结果进一步证明了numpy.sum只适合大规模数组求和,否则性能会比python native差。
=======================================
转载请联系作者授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。