前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >介绍 NumPy 的五种玩法

介绍 NumPy 的五种玩法

作者头像
double
发布2020-11-11 16:02:39
4050
发布2020-11-11 16:02:39
举报
文章被收录于专栏:算法channel算法channel

图解入门 NumPy,这篇文章,已经让我们感知到NumPy的强大,但要想真正用活NumPy,还不够!下面介绍五种玩法,以此深入掌握NumPy:

1. 记住NumPy中文网站:https://www.numpy.org.cn/,里面包括NumPy 的官档中文版,使用入门,实战等。

里面包括NumPy官档最详细的一个中文翻译,地址为:

https://www.numpy.org.cn/reference/

平时遇到关于NumPy的bug,解决不了的,可以先去这里查看API的使用说明。

2. 理解NumPy的向量化能力,这正是赋予它简洁的重要原因之一。使用Python原生API会经常写些for,但是NumPy让它变得不再需要,NumPy一切都是按照向量计算。如下计算小于3的元素置0,否则置为1:

代码语言:javascript
复制
# 使用Python原生
a = [10,4,-6,3,5,1]
# 小于3的元素置为0,不小于3的元素置为1
b = []
for i in a:
    b.append(0 if i < 3 else 1)
print(b)

使用 NumPy 的where方法,语法更加简洁,看不到for语句,符合Python哲学:

代码语言:javascript
复制
# 使用NumPy
na = np.array(a)
# 一行代码
b = np.where(na < 3, 0, 1)
print(b)

3. 处理多维数组,NumPy的索引和切片更强大,如下 na < 3 得到布尔索引,一切都按照向量化操作:

代码语言:javascript
复制
na = np.array([10,4,-6,3,5,1])
na[na < 3]
# 结果如下:
# array([-6,  1])
代码语言:javascript
复制
# 创建二维数组
np.random.randint(1,10,size=(3,4))
c2 = np.random.randint(1,10,size=(3,4))
c2
array([[3, 2, 9, 9],
       [9, 5, 2, 4],
       [8, 1, 2, 4]])
# 更强大简洁的切片功能:
c2[:2,1:3]
array([[2, 9],
       [5, 2]])

4. 学习NumPy,不可能不与广播打交道,广播机制必须要理解,关于它的规则可参考:

https://www.numpy.org.cn/article/basics/python_numpy_tutorial.html#%E5%B9%BF%E6%92%AD-broadcasting

5. NumPy往往是数据分析、机器学习、深度学习相关框架的底层框架,NumPy在这方面的实战,都有哪些呢?

在这里推荐一个纯NumPy实现各种常见机器学习、深度学习算法的github库,地址为:

https://github.com/ddbourgin/numpy-ml

此库里有各种常见机器学习算法,神经网络模型,优化器,各种激活函数的纯NumPy实现方法。没事研究一下,既能提高NumPy技能,还能掌握常见AI算法,一举两得!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档