PyTorch 深度学习实战
方远
LINE China 数据科学家
10381 人已学习
新⼈⾸单¥59
登录后,你可以任选3讲全文学习
课程目录
已完结/共 32 讲
开篇词 (1讲)
PyTorch 深度学习实战
15
15
1.0x
00:00/00:00
登录|注册

02 | NumPy(上):核心数据结构详解

你好,我是方远。
通过前面两节课,我们已经对 PyTorch 有了初步的了解,你是不是迫不及待想要动手玩转 PyTorch 了?先别着急,我们有必要先品尝一道“前菜”,它就是 NumPy。
为什么我们要先拿下 NumPy 呢?我相信,无论你正在从事或打算入门机器学习,不接触 NumPy 几乎不可能。现在的主流深度学习框架 PyTorch 与 TensorFlow 中最基本的计算单元 Tensor,都与 NumPy 数组有着类似的计算逻辑,可以说掌握了 NumPy 对学习这两种框架都有很大帮助。
另外,NumPy 还被广泛用在 Pandas,SciPy 等其他数据科学与科学计算的 Python 模块中。而我们日常用得越来越多的人脸识别技术(属于计算机视觉领域),其原理本质上就是先把图片转换成 NumPy 的数组,然后再进行一系列处理。
为了让你真正吃透 NumPy,我会用两节课的内容讲解 NumPy。这节课,我们先介绍 NumPy 的数组、数组的关键属性以及非常重要的轴的概念。

什么是 NumPy

NumPy 是用于 Python 中科学计算的一个基础包。它提供了一个多维度的数组对象(稍后展开),以及针对数组对象的各种快速操作,例如排序、变换,选择等。NumPy 的安装方式非常简单,可以使用 Conda 安装,命令如下:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

NumPy是Python中用于科学计算的基础包,提供了多维数组对象和各种快速操作。本文深入介绍了NumPy数组的创建、属性和重要概念,包括数组的维度、形状、元素总数和数据类型。读者将学习到创建数组的多种方式,如使用np.ones()和np.zeros()创建全1和全0数组,以及使用np.arange()和np.linspace()创建特定范围的数组。此外,文章还解释了数组轴的概念,以及如何根据不同轴进行聚合操作和在多维数组中使用axis参数进行计算。这些内容对于初学者快速了解NumPy的基本概念和操作,为进一步学习和应用NumPy打下基础。文章内容丰富,涵盖了NumPy数组的基本操作和高级概念,适合对科学计算和数据处理感兴趣的读者阅读学习。同时,文章还强调了NumPy在机器学习和数据处理中的重要性,为读者提供了学习和应用NumPy的动力和方向。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《PyTorch 深度学习实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(24)

  • 最新
  • 精选
  • 于小咸
    置顶
    之前一直没搞清楚轴的概念,听方老师讲解以后终于明白了,轴的方向就是行序号或者列序号增长的方向

    作者回复: 你好,于小咸。感谢你的留言与认可。希望与你一起进步。^^

    2021-10-19
    2
    7
  • lwg0452
    思考题 np.average(interest_score, axis=1)

    作者回复: 你好,lwg0452。感谢你的留言^^。是的,这么做是正确的👍。 也可以用np.mean。对于普通求平均来说,他们都是一样的,也就是说np.average(interest_score, axis=1)与np.mean(interest_score, axis=1)的输出是一样的。 不过np.average还可以用于加权平均,比如给定每个游戏的权值weights=np.array([4,2,7]),计算每名同学对三款游戏的加权平均就可以这样做, np.average(interest_score, weights=weights, axis=1)。 加权平均计算方式的话,用第一名同学举例就是 interest_score[0][0] * weights[0]/weights.sum() + interest_score[0][1] * weights[1]/weights.sum() + interest_score[0][2] * weights[0]/weights.sum()

    2021-10-13
    2
    20
  • jssfy
    pytorch哪些场景必须或者强烈建议用np? 不用python数组的原因是什么?可否举个例子?

    作者回复: 你好,jssfy。首先谢谢你的留言。 pytorch是用于深度学习的框架,如果涉及到数组使用都强烈建议使用np,原因有以下几点: 1. np提供了丰富的矩阵运算,非常适合深度学习处理数据时使用。 例如,数组中某维度的数据拼接,在实际训练场景中,可用于增加训练数据的特征维度等,np中一个函数即可搞定。 再例如,np中的argmax函数,可以让我们在做分类任务时轻松取到最大概率的分类是什么。 等等这些np数组中强大的功能,都是python数组所不具备的。 2. np节约内存 np数组对内存的优化很好,长度越大,其相比python的数组占用内存越少。

    2021-10-13
    2
    12
  • AstrHan
    数组轴的这个例子好记!老师是自行车爱好者啊,每张头图都是,,

    作者回复: 你好,AstrHan,谢谢你的留言。谢谢你的认可。是啊,自行车爱好者:)。

    2021-10-13
    3
  • qifeng.wang
    作者没有介绍四维轴的概念,三轴的可以理解,就是长方体,X(0),Y(1),Z(2), axis=0就按照这个方向 做投影转换成 二维(Y,Z),四维的有点理解不出来,麻烦解读一下。

    作者回复: 你好,感谢你的留言。 3维以上就画不出来。但其实原理是一样的。 你比如说,有一个数组的shape是(3,2,4,5) 现在沿着第2个轴求最大值,其实就是沿着axis=1求最大值,经过计算之后的数组的shape就是(3,4,5)

    2022-06-23
    2
    2
  • 芜风
    老师的专栏又简洁又有重点,真的很好!

    作者回复: 感谢支持^^

    2022-05-07
    1
  • 人间失格
    给老师点赞,老师轴抽象的很好,比我初次看更具体,希望后面网络结构和优化也能这样。请问numpy快和并行的原因是因为底层storage方式吗?

    作者回复: 你好,人间失格。谢谢你的留言也感谢你的认可。:)我会用通俗易通的言语来讲解专栏的内容。 Numpy快是因为底层是用C、C++和Fortran写的,并在底层对各种运算进行了高度的优化。

    2021-10-13
    1
  • John(易筋)
    ``` mean_1 = np.mean(interest_score, axis=1) print(mean_1) ```

    作者回复: 👍🏻 ^^

    2022-07-25归属地:北京
  • starwonder
    数据降维的本质就是按照某(几)个轴的方向进行聚合吧?

    作者回复: 你好,感谢你的留言。 这个看怎么理解吧。 通常来说降维是指将输入数据的若干个维度,通过某种方法降低到指定维度。 例如,PCA或者一些embedding方法

    2022-07-07
  • 亚林
    np.average(interest_score, axis=0)

    作者回复: 👍🏻👍🏻^^ 也可以用np.mean。对于普通求平均来说,他们都是一样的,也就是说np.average(interest_score, axis=1)与np.mean(interest_score, axis=1)的输出是一样的。 不过np.average还可以用于加权平均,比如给定每个游戏的权值weights=np.array([4,2,7]),计算每名同学对三款游戏的加权平均就可以这样做, np.average(interest_score, weights=weights, axis=1)。 加权平均计算方式的话,用第一名同学举例就是 interest_score[0][0] * weights[0]/weights.sum() + interest_score[0][1] * weights[1]/weights.sum() + interest_score[0][2] * weights[0]/weights.sum()

    2022-05-06
收起评论
显示
设置
留言
24
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部