介绍 NumPy 的五种玩法

共 579字,需浏览 2分钟

 ·

2020-11-09 02:15

Python与算法社区
已原创427篇,干货满满
值得星标


01

02

03


三步加星标





图解入门 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 < 301)
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([[3299],
       [9524],
       [8124]])
# 更强大简洁的切片功能:
c2[:2,1:3]
array([[29],
       [52]])

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算法,一举两得!


过往20篇专题汇总为PDF:适合小白学习的 20 个 Python 专题,需要的可微信我:

不必打赏
给我点个赞
就心满意足了
浏览 77
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报