图解入门 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:
# 使用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哲学:
# 使用NumPy
na = np.array(a)
# 一行代码
b = np.where(na < 3, 0, 1)
print(b)
3. 处理多维数组,NumPy的索引和切片更强大,如下 na < 3 得到布尔索引,一切都按照向量化操作:
na = np.array([10,4,-6,3,5,1])
na[na < 3]
# 结果如下:
# array([-6, 1])
# 创建二维数组
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算法,一举两得!
本文分享自 程序员郭震zhenguo 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!