社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 进阶视频课 - 1. NumPy 上

王的机器 • 3 年前 • 320 次点击  

这是 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
 
320 次点击