python—— numpy,math数据计算效率对比(以及一点numerpx的使用)

import math
import numpy as np
import time
import numexpr as ne
np.set_printoptions(threshold=10000)
word = np.random.randint(0, 2000, (3, 360))

#print(word)
[cow,row] = word.shape[0], word.shape[1]

j=0
my_list = []
data_rec = np.zeros([3, 360])
starttime = time.time()
k = 0
while k < row:
   # data_rec[0, k] = ne.evaluate("cos(word[0, k]) * word[1, k]")
    data_rec[0, k] = format(math.cos(word[0, k]) * word[1, k], '.2f')
    data_rec[1, k] = format(math.sin(word[0, k]) * word[1, k], '.2f')
    data_rec[2, k] = k
    k += 1
endtime = time.time()
dtime = endtime - starttime
print(dtime)

starttime1 = time.time()
k = 0
while k < row:
    data_rec[0, k] = format(np.cos(word[0, k]) * word[1, k], '.2f')
    data_rec[1, k] = format(np.sin(word[0, k]) * word[1, k], '.2f')
    data_rec[2, k] = k
    k += 1
endtime1 = time.time()
dtime1 = endtime1 - starttime1
print(dtime1)

运行次数:0
math:0.0049860477447509766
np:0.005984067916870117
运行次数:1
math:0.0049877166748046875
np:0.004987001419067383
运行次数:2
math:0.0059833526611328125
np:0.00598454475402832
运行次数:3
math:0.007977485656738281
np:0.004987001419067383
运行次数:4
math:0.014960289001464844
np:0.00598454475402832
运行次数:5
math:0.007978677749633789
np:0.005983829498291016
运行次数:6
math:0.00698399543762207
np:0.005982398986816406
运行次数:7
math:0.006979465484619141
np:0.004986286163330078
运行次数:8
math:0.0029916763305664062
np:0.003989696502685547
运行次数:9
math:0.002992391586303711
np:0.0049855709075927734
运行次数:10
math:0.004987001419067383
np:0.003989458084106445
运行次数:11
math:0.00598454475402832
np:0.00498652458190918
运行次数:12
math:0.003988981246948242
np:0.004986763000488281
运行次数:13
math:0.005984783172607422
np:0.001993417739868164
运行次数:14
math:0.003989696502685547
np:0.0029926300048828125
运行次数:15
math:0.002991199493408203
np:0.002993345260620117
运行次数:16
math:0.0059833526611328125
np:0.0029931068420410156
运行次数:17
math:0.0029909610748291016
np:0.003988742828369141
运行次数:18
math:0.004987001419067383
np:0.0039899349212646484
运行次数:19
math:0.00498509407043457
np:0.005985736846923828

PS:最后提个问题:我想用numexpr 实现上述功能,该怎么实现??!

import numpy as np
import time
import numexpr as ne
np.set_printoptions(threshold=10000)
word = np.random.randint(0, 2000, (3, 360))
#nx, ny = 12, 15
#a = np.linspace(0.,10,nx*ny).reshape(nx,ny)
b = ne.evaluate("sin(word)")
print(a)
print(b)
#对这个不太懂,不过貌似对计算速度有很大的提升
#貌似使用numexpr 不能计算数组中的某一行,比如我只想计算word中的第一行,就不可以,不知道是我方法没用对还是什么情况。难受。。。。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值