numpy sum,numpy与python

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: