前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >有人把NumPy画成了画,生动又形象

有人把NumPy画成了画,生动又形象

作者头像
HuangWeiAI
发布2019-09-30 15:54:41
8450
发布2019-09-30 15:54:41
举报
文章被收录于专栏:浊酒清味浊酒清味

原文链接:

http://jalammar.github.io/visual-numpy/

创建数组

我们可以创建一个NumPy数组(也就是强大的ndarray),方法是传递一个python列表并使用' np.array() '。在本例中,python创建了我们可以在这里看到的数组:

通常情况下,我们希望NumPy为我们初始化数组的值。NumPy为这些情况提供了像ones()、zeros()和random.random()这样的方法。我们只是把我们想要生成的元素的数量传递给他们:

一旦我们创建了数组,我们就可以开始以有趣的方式操作它们。

数组运算

让我们创建两个NumPy数组来展示它们的用处。我们称它们为data和ones:

将它们按位置相加(即添加每一行的值)就像输入data + ones一样简单:

当我开始学习这些工具时,我发现这样的抽象使我不必在循环中编写这样的计算程序,这让我耳目一新。这是一个很好的抽象概念,可以让你在更高的层次上思考问题。

我们还可以这样做:

通常情况下,我们希望在数组和单个数字之间执行操作(我们也可以将此称为向量和标量之间的操作)。例如,我们的数组以英里为单位表示距离,我们想把它转换成千米。我们简单地说data* 1.6:

看到NumPy是如何理解这个操作的了吗?这个概念叫做广播,它非常有用。

索引

我们可以索引和切片NumPy数组的所有方法,我们可以切片python列表:

聚合

NumPy给我们的额外好处是聚合功能:

除了最小值,最大值,和求和,你还可以使用其他的聚合函数,比如mean得到平均值,prod得到所有元素相乘的结果,std得到标准差,还有很多其他的。

更高的维度

我们看过的所有例子都是关于一维向量的。NumPy一个关键的部分是它能够将我们目前看到的所有内容应用到任意数量的维度。

创建矩阵

我们可以传递python列表的列表的形状如下,让NumPy创建一个矩阵来表示它们:

代码语言:javascript
复制
np.array([[1,2],[3,4]])

我们也可以使用上面提到的方法(ones()、zero()和random.random()),只要我们给它们一个元组来描述我们正在创建的矩阵的维数:

矩阵运算

如果两个矩阵大小相同,我们可以使用算术运算符(+-*/)对矩阵进行加法和乘法。NumPy将这些操作作为位置操作处理:

只有当不同维数为1时(例如,矩阵只有一列或一行),我们才可以对不同大小的矩阵执行这些算术操作,在这种情况下,NumPy使用它的广播规则来执行该操作:

点乘

算术的一个关键区别是使用点乘和矩阵乘法。NumPy给每个矩阵一个点乘dot()方法,我们可以用它来执行点积操作与其他矩阵:

我在这个图的底部添加了矩阵维数来强调这两个矩阵必须有相同的维数在它们彼此面对的一边。你可以把这个操作想象成这样:

矩阵聚合

我们可以像聚合向量一样聚合矩阵:

我们不仅可以在矩阵中聚合所有的值,还可以使用axis参数跨行或跨列聚合:

暂时翻译到这里,后面还有更多的内容,需要的同学可以留言,我会翻译后面的内容。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与机器学习之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档