for循环和numpy内置函数的效率

比较for循环和numpy内置函数的效率

import time
import numpy as np 

x1=[9, 2, 5, 0, 0, 7, 5, 0, 0, 0, 9, 2, 5, 0, 0]
x2=[9, 2, 2, 9, 0, 9, 2, 5, 0, 0, 9, 2, 5, 0, 0]

#for循环
#点乘
tib=time.clock()
ans=0
for i in range(len(x1)):
    ans+=x1[i]*x2[i]
tie=time.clock()
print("ans = " + str(ans) + "\ntime = " + str(1000*(tie-tib)) + "ms")

#生成矩阵
tib=time.clock()
mat=np.zeros((len(x1),len(x2)))
for i in range(len(x1)):
    for j in range(len(x2)):
        mat[i,j]=x1[i]*x2[j]
tie=time.clock()
print("matrix = " + str(mat) + "\ntime = " + str(1000*(tie-tib)) + "ms")

#生成向量
tib=time.clock()
vec=np.zeros(len(x1))
for i in range(len(x1)):
    vec[i]=x1[i]*x2[i]
tie=time.clock()
print("element multiplication = " + str(vec) + "\ntime = " + str(1000*(tie-tib)) + "ms")

#广播
ran=np.random.rand(3,len(x1))
print("ran shape = " + str(ran.shape))
tib=time.clock()
rdot=np.zeros(ran.shape[0])
for i in range(ran.shape[0]):
    for j in range(len(x1)):
        rdot[i]+=ran[i,j]*x1[j]
tie=time.clock()
print("random dot = " + str(rdot) + "\ntime = " + str(1000*(tie-tib)) + "ms")
ans = 278
time = 0.037ms
matrix = [[81. 18. 18. 81.  0. 81. 18. 45.  0.  0. 81. 18. 45.  0.  0.]
 [18.  4.  4. 18.  0. 18.  4. 10.  0.  0. 18.  4. 10.  0.  0.]
 [45. 10. 10. 45.  0. 45. 10. 25.  0.  0. 45. 10. 25.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [63. 14. 14. 63.  0. 63. 14. 35.  0.  0. 63. 14. 35.  0.  0.]
 [45. 10. 10. 45.  0. 45. 10. 25.  0.  0. 45. 10. 25.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [81. 18. 18. 81.  0. 81. 18. 45.  0.  0. 81. 18. 45.  0.  0.]
 [18.  4.  4. 18.  0. 18.  4. 10.  0.  0. 18.  4. 10.  0.  0.]
 [45. 10. 10. 45.  0. 45. 10. 25.  0.  0. 45. 10. 25.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]]
time = 0.5397ms
element multiplication = [81.  4. 10.  0.  0. 63. 10.  0.  0.  0. 81.  4. 25.  0.
0.]
time = 0.0699ms
ran shape = (3L, 15L)
random dot = [18.29194764 27.48252156 27.55980781]
time = 0.2805ms
import time
import numpy as np 

x1 = [9, 2, 5, 0, 0, 7, 5, 0, 0, 0, 9, 2, 5, 0, 0]
x2 = [9, 2, 2, 9, 0, 9, 2, 5, 0, 0, 9, 2, 5, 0, 0]

#numpy内置函数
#点乘
tib=time.clock()
dot=np.dot(x1,x2)
tie=time.clock()
print("dot = " + str(dot) + "\ntime = " + str(1000*(tie-tib)) + "ms")

#生成矩阵
tib=time.clock()
outer=np.outer(x1,x2)
tie=time.clock()
print("outer = " + str(outer) + "\ntime = " + str(1000*(tie-tib)) + "ms")

#生成向量
tib=time.clock()
mul=np.multiply(x1,x2)
tie=time.clock()
print("mul = " + str(mul) + "\ntime = " + str(1000*(tie-tib)) + "ms")

#广播
ran=np.random.rand(3,len(x1))
tib=time.clock()
gdot=np.dot(ran,x1)
tie=time.clock()
print("gdot = " + str(gdot) + "\ntime = " + str(1000*(tie-tib)) + "ms")
dot = 278
time = 0.0179ms
outer = [[81 18 18 81  0 81 18 45  0  0 81 18 45  0  0]
 [18  4  4 18  0 18  4 10  0  0 18  4 10  0  0]
 [45 10 10 45  0 45 10 25  0  0 45 10 25  0  0]
 [ 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0]
 [63 14 14 63  0 63 14 35  0  0 63 14 35  0  0]
 [45 10 10 45  0 45 10 25  0  0 45 10 25  0  0]
 [ 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0]
 [81 18 18 81  0 81 18 45  0  0 81 18 45  0  0]
 [18  4  4 18  0 18  4 10  0  0 18  4 10  0  0]
 [45 10 10 45  0 45 10 25  0  0 45 10 25  0  0]
 [ 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0]]
time = 0.0739ms
mul = [81  4 10  0  0 63 10  0  0  0 81  4 25  0  0]
time = 0.0269ms
gdot = [23.68344843 19.57739898 15.32674118]
time = 0.0236ms
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种简单易学的编程语言,非常适合初学者入门。它具有清晰的语法和丰富的函数库,可以用于各种应用领域,包括数据分析、机器学习、Web开发等。 下面是Python入门的一些基础知识点: 1. 安装Python:首先需要在官网下载并安装Python解释器,推荐使用最新版本的Python 3。 2. 变量和数据类型:Python中的变量可以直接赋值,不需要声明类型。常见的数据类型包括整数、浮点数、字符串、列表、元组和字典。 3. 控制流程:Python支持条件语句(if-else)、循环语句(for、while)和函数定义,可以用于控制程序的执行流程。 4. 函数和模块:Python提供了丰富的内置函数,同时也可以自定义函数。模块是一组相关函数和变量的集合,可以通过import语句引入并使用。 5. 文件操作:Python可以读写文件,可以使用open函数打开文件并进行读写操作。 Numpy是Python中常用的数值计算库,提供了高效的多维数组对象和各种数学函数。以下是Numpy函数库的基础知识点: 1. 数组创建:可以使用numpy.array函数创建数组,也可以使用numpy.arange、numpy.zeros、numpy.ones等函数创建特定形状的数组。 2. 数组操作:可以对数组进行索引和切片操作,也可以进行数组的形状变换、合并和分割等操作。 3. 数学函数:Numpy提供了丰富的数学函数,包括常见的数学运算、三角函数、指数函数、对数函数等。 4. 线性代数:Numpy提供了线性代数相关的函数,如矩阵乘法、求逆矩阵、求特征值等。 5. 随机数生成:Numpy可以生成各种分布的随机数,如均匀分布、正态分布等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值