鱼C论坛

 找回密码
 立即注册
查看: 10212|回复: 55

[技术交流] 02 - 超级高效的 Numpy(下)|【1000 倍效率那种】

[复制链接]
发表于 2020-2-10 08:16:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2020-2-10 11:36 编辑

Snip20200209_267.png


通过上一讲学习,是否感受到 Numpy 的丝般柔滑呢?!

好,本讲继续感受下 Numpy 自身语法的简洁和快速!

这次新建一个 py 文件。

先导入:
import numpy as np
然后我先对 np.array() 有个充分了解。

使用该方法会将 tuple 和 list , array 或者其他的序列模式的数据转创建为 ndarray

默认会创建一个新的 ndarray 。

列表的转换我们之前用过就不说了,元祖操作是一样滴~

range() 在 Py3 中会返回一个可迭代对象:
np.array(range(6))
我们看看是否可以转为 ndarray:
Snip20200210_279.png


可以,Numpy 中其实也有内置的同款操作 np.arange()
np.arange(6)
输出一样:
Snip20200210_282.png


既然还是感受高效,那么先看这段代码:
f1 = range(100000)
[i**2 for i in f1]
生成 10W 项,每项取平方,插入到 f1(截取部分):
Snip20200210_283.png


结果不重要,用一个魔法方法修改代码:
f1 = range(100000)
%timeit [i**2 for i in f1]
运行:
Snip20200210_285.png


%timeit 对于任意语句,它会自动多次执行以产生一个非常精确的平均执行时间。

下面的话是神马意思?

来解释下:
游客,如果您要查看本帖隐藏内容请回复


不同计算机速度不一样,大家以自己的为准。

我们接下来对比 np.arange() 的速度:
f2 = np.arange(100000)
%timeit f2**2
f2**2 是让每一项都开方,Numpy 中的语法,看效果:
Snip20200210_286.png


我擦!!

每次循环 10000 个,最好时间 68.7 μs ± 1.38 μs 。

注意: 1ms = 1000us 。

看到效率了吗,循环次数是之前的 1000 倍!

目前 Numpy 使用 CPU 加速,其他的库会用 GPU 加速,意味着更飞速!

有木有爱上 Numpy 的高效呢?!

下一讲,我们来学习多维数组

代码包(可不下): secondNparray.zip (318 Bytes, 下载次数: 9, 售价: 3 鱼币)




如果有收获,别忘了评分


                               
登录/注册后可看大图


如果想看更多,请订阅 淘专辑传送门)(不喜欢更要订阅

评分

参与人数 2荣誉 +10 鱼币 +10 贡献 +6 收起 理由
鱼C-小师妹 + 5 + 5 + 3 鱼C有你更精彩^_^
寻道途 + 5 + 5 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-10 08:27:11 | 显示全部楼层
我爱 Numpy,我爱鱼C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 08:54:46 | 显示全部楼层
我爱 Numpy,我爱鱼C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 11:52:58 | 显示全部楼层
我爱 Numpy,我爱鱼C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 11:54:25 | 显示全部楼层
我爱 Numpy,我爱鱼C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 17:33:11 | 显示全部楼层
我爱 Numpy,我爱鱼C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 17:54:35 | 显示全部楼层
我爱 Numpy,我爱鱼 C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 20:06:15 | 显示全部楼层
这么快CPU会不会烧坏?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 20:35:35 | 显示全部楼层
我爱 Numpy,我爱鱼C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 20:55:49 | 显示全部楼层
为什么 我文件下载安装成功了,在网页里 例子都可以执行,但是创建py文件的时候不能导入,说我没有numpy模块ModuleNotFoundError: No module named 'numpy'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 21:24:33 | 显示全部楼层
学习使我快乐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-10 21:33:23 | 显示全部楼层
学Python不开车 发表于 2020-2-10 20:55
为什么 我文件下载安装成功了,在网页里 例子都可以执行,但是创建py文件的时候不能导入,说我没有numpy模 ...

确定一开始就导入了吗:
import numpy
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-11 09:10:00 | 显示全部楼层
不二如是 发表于 2020-2-10 21:33
确定一开始就导入了吗:

导入numpy了 也下载老师说的软件了anaconda了,还是不行,今天用cmd又用py -3 -m pip install numpy 安装完之后就可以了,但是
>>> f1 = range(100000)
>>> %timeit [i**2 for i in f1]
SyntaxError: invalid syntax
>>> f2 = np.arange(100000)
>>> %timeit f2**2
SyntaxError: invalid syntax
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-11 09:17:27 | 显示全部楼层
学Python不开车 发表于 2020-2-11 09:10
导入numpy了 也下载老师说的软件了anaconda了,还是不行,今天用cmd又用py -3 -m pip install numpy 安装 ...

从 anaconda 中启动 jupyter

然后在 jupyter 中撸代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-11 09:33:58 | 显示全部楼层
不二如是 发表于 2020-2-11 09:17
从 anaconda 中启动 jupyter

然后在 jupyter 中撸代码

在anaconda中运行没有问题,但是您不是说
这次新建一个 py 文件。

先导入:

import numpy as np
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-11 17:42:36 | 显示全部楼层
我爱 Numpy,我爱鱼C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 11:23:12 | 显示全部楼层
我爱 Numpy,我爱鱼C
怎么都在 Jupyter 里写代码呢???
@不二如是
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 11:23:56 | 显示全部楼层
_2_ 发表于 2020-2-12 11:23
我爱 Numpy,我爱鱼C
怎么都在 Jupyter 里写代码呢???
@不二如是

因为舒服...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 11:28:28 | 显示全部楼层

VSCode , NotePad++ , Git , PyCharm ......
我很是为我的硬盘存储空间担忧
现在又来了一个 Jupyter , 真的有些不知所措了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 12:06:49 | 显示全部楼层
zltzlt 发表于 2020-2-10 17:54
我爱 Numpy,我爱鱼 C

感觉 numpy 的导入时间很慢很慢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 01:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表