网站首页 > 技术文章 正文
原文链接:
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创建一个矩阵来表示它们:
np.array([[1,2],[3,4]])
我们也可以使用上面提到的方法(ones()、zero()和random.random()),只要我们给它们一个元组来描述我们正在创建的矩阵的维数:
矩阵运算
如果两个矩阵大小相同,我们可以使用算术运算符(+-*/)对矩阵进行加法和乘法。NumPy将这些操作作为位置操作处理:
只有当不同维数为1时(例如,矩阵只有一列或一行),我们才可以对不同大小的矩阵执行这些算术操作,在这种情况下,NumPy使用它的广播规则来执行该操作:
点乘
算术的一个关键区别是使用点乘和矩阵乘法。NumPy给每个矩阵一个点乘dot()方法,我们可以用它来执行点积操作与其他矩阵:
我在这个图的底部添加了矩阵维数来强调这两个矩阵必须有相同的维数在它们彼此面对的一边。你可以把这个操作想象成这样:
矩阵聚合
我们可以像聚合向量一样聚合矩阵:
我们不仅可以在矩阵中聚合所有的值,还可以使用axis参数跨行或跨列聚合:
猜你喜欢
- 2024-09-26 人工智能数学基础----矩阵(人工智能a算法)
- 2024-09-26 机器学习之线性代数速查表(线性代数快速入门)
- 2024-09-26 谈谈矩阵的运算(矩阵及其运算的性质)
- 2024-09-26 巧用python的矩阵运算来进行电路的计算和分析
- 2024-09-26 计算机图形中的矩阵(计算机的矩阵怎么用)
- 2024-09-26 形象直观的“2X2矩阵”乘法运算的本质原理
- 2024-09-26 深度学习:所有矩阵尺寸和计算的深层指南!
- 2024-09-26 玩转张量点乘和变形(张量的运算规则及意义)
- 2024-09-26 python与线性代数 矩阵的运算(python做线性代数)
- 2024-09-26 矩阵加法与数乘的应用——灰度矩阵的凸组合对应灰度图的合成
- 1515℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 573℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 513℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 486℃启用MySQL查询缓存(mysql8.0查询缓存)
- 469℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 449℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 447℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (83)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)