Py学习  »  Python

Python 进阶视频课 - 1. NumPy 上

王的机器 • 4 年前 • 433 次点击  

这是 Python 进阶课的第一节 -NumPy,由于内容太多视频时间太长 (3 个多小时),分成上下部。之前基础版的 11 节的目录如下:


  1. 编程概览

  2. 元素型数据

  3. 容器型数据

  4. 流程控制:条件-循环-异常处理

  5. 函数上:低阶函数

  6. 函数下:高阶函数

  7. 类和对象:封装-继承-多态-组合

  8. 字符串专场:格式化和正则化

  9. 解析表达式:简约也简单

  10. 生成器和迭代器:简约不简单

  11. 装饰器:高端不简单


学习任何东西 (以 NumPy 举例) 谈谈的学习思路,主干线是 WHY-WHAT-HOW-HOW WELL,看这种思路是不是符合你的胃口:



WHY:为什么会有 NumPy?


每一个工具包的创建必是解决痛点

看下面数组和列表之间的计算效率对比:两个大小都是 1000000,把每个元素翻倍,运行 10 次用 %time 记时。(前者比后者快 20-30 倍)

%%timelst = list(range(1000000))for _ in range(10): my_list = [x * 2 for x in lst]


Wall time: 1.2 s


arr = numpy.arange(1000000)for _ in range(10): my_arr = arr * 2


Wall time: 34.9 ms




WHAT


NumPy 数组是一种数据结构。很多资料都从它的表象开始教,比如一维、二维、多维数组长什么样子。但这都不是本质,NumPy 数组的本质是“计算机内存的连续一维段 (1D segment),并与若干个指针一起来在视图中展示高维度


听着很绕口,但这样理解数组之后很多问题都可以轻易理解,比如:


  • 高维数组的转置

  • 数组的重塑和打平

  • 不同维度上的整合


我为上面那句话画了三幅图,注意比较数组“想象中的样子”、“打印出的样子”和“内存里的样子”。



看懂之后,你会了解 NumPy 数组其实就是一连串横向的元素,用指针来控制维度 (axis) 和每个维度包含的元素个数 (shape)。



HOW


了解完数组本质之后,就可以把它当做对象(Python 中万物皆对象嘛)把玩了:


  • 怎么创建数组 (不会创建那还学什么)

  • 怎么存载数组 (存为了下次载,载的是上回存)

  • 怎么获取数组 (和索引切片列表相似又不相似)

  • 怎么变形数组 (把数组用不同的样子来展示)

  • 怎么计算数组 (这才是数组的最大用处)


总体内容用思维导图来表示,这也是我经常强调的系统化学东西。有了总体框架,你在接触到繁多的细节时才会把握主干线。




HOW WELL


上面提到了要学好,不仅仅需要你们用心学,也需要我用心教。对于一切难点,我都会将其可视化,这样会大大降低了你们的理解门槛


比如在讲广播机制时,下面的一图胜千言。



比如在讲数组计算时,用神经网络中一个公式可把重塑 (reshape)、点乘 (dot)、广播 (broadcast) 和元素层面 (element-wise) 几个知识点一次性捋清。




内容肯定是无比干货,就看你们想不想学。付费用户(付 1 赠 1)可以获得:


  • 观看课程视频 (100 分钟)

  • Python 代码 (Jupyter Notebook)




Jupyter Notebook

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/99036