01 - 超级高效的 Numpy(上)
本帖最后由 不二如是 于 2020-2-9 23:40 编辑上一讲我们搭建完环境,现在来体验下 Numpy 的高效。
继续用我们的列表表达式快速生成,a 和 b 两个列表:
a 是 0 到 9 共 10 个自然数,b 是 1 到 10 共 10 个自然数。
若想让两个列表对应项相加,直接:
嗯??怎么变成拼接了...
我们可以采取最原始的办法,新建一个空列表 c 。
通过 append 方法,在循环中将 a 和 b 每个位置求和插入其中。
代码实现:
c = []
for i in range(len(a)):
c.append(a + b)
print(c)
然后在 jupyter 中执行:
没问题,结果是我们想要的。
既然用了 Numpy,我就可以直接这么写:
np.array(a) + np.array(b)
来一起看结果:
当然就这样,都是一瞬间出结果,看不出来高效不高效问题。
怎么办?
用时间快慢来衡量,例如这段代码:
**** Hidden Message *****
该段代码常用来统计运行时间,time.perf_counter() 会返回系统运行时间。
通过 time.sleep(1) 人为暂停 1 秒,来看运行结果:
这样我们只要将 time.sleep(1) 换为我们的函数块,通过对比时间就能看出效率高低。
两个方法也有,为了更清楚的看出效率,将上面的相加算法改为:
对应项求平方,然后再相加。
修改第一个循环代码改为:
c = []
for i in range(len(a)):
c.append(a**2 + b**2)
print(c)
带入计时代码中,运行:
修改 numpy 方法代码:
np.array(a)**2 + np.array(b)**2
带入计时代码中,运行:
想一想如果千万的货币交易,1 位的变化,那也是很多钱哦~
下一讲我们用更多代码来感受 Numpy 的高效!
如果有收获,别忘了评分{:10_281:} :
http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif
如果想看更多,请订阅 淘专辑(传送门)(不喜欢更要订阅{:10_297:} ) {:10_256:}{:10_256:} zltzlt 发表于 2020-2-9 21:17
要不要这么快{:10_278:} zltzlt 发表于 2020-2-9 21:51
这段代码在 Python 3.8 根本无法运行,报错:
AttributeError: module 'time' has no attribute 'cl ...
刷新页面 不二如是 发表于 2020-2-9 21:52
刷新页面
好吧{:10_250:} 学习学习{:10_257:} numpy还能这样? 学习 膜拜 呵呵,@不二如是 终于来讲 Python 啦~ _2_ 发表于 2020-2-11 14:07
呵呵,@不二如是 终于来讲 Python 啦~
{:10_278:}主要是 Nnmpy 看看
看看 不二如是 发表于 2020-2-11 14:28
主要是 Nnmpy
难道导入 numpy 的时间不用计算? 学习一下 Numpy 好厉害的 哦,学习 学习中 学习一下{:10_257:} 骚操作。
页:
[1]
2