友情提示:不要被公式吓到,它们都是纸老虎 关于 Numpy NumPy 是使用 Python 进行科学计算的基础软件包。...向量 一般数据被分为标量和向量,标量比较容易理解,即数轴上的一个数值 向量直观的认识是一组数值,可以理解为一维数组,但是为啥常见定义表示:具有方向的数值,方向指的是啥?这个问题困扰了我很多年(苦笑)。...矩阵 理解了向量,矩阵理解起来就容易了,相当于一组向量,即坐标系中的多个点的集合,矩阵运算,就相当于多个向量的运算或变换。...可能这里比较绕或冗余,先解释到这里,后面的文章中会进一步解释向量和矩阵的实际意义 初始化 numpy 中,提供了多种产生向量和矩阵的方法,例如用 array 可以将 python 数组初始化为 numpy...矩阵点积 求和与连乘 统计学公式中,求和运算很常见,例如对矩阵求和: ?
如何在深度学习中使用线性代数? 神经网络将权重存储在矩阵中。 线性代数使矩阵运算变得更加快捷简便,尤其是在 GPU 上进行训练的时候。 实际上, GPU 是以向量和矩阵运算为基础的。...向量表示 我们可以以不同的方式来表示向量。 这里有几个常见的表示方式。 几何中的向量 向量通常表示从一个点出发的运动。 它们将 大小 和 方向 的潜在变化存储到一个点。...向量乘法 向量乘法有两种类型:点积和 Hadamard乘积 。 点积 两个向量的点积是一个标量。 向量和矩阵的点积(矩阵乘法)是深度学习中最重要的操作之一。...[2, 4]] 矩阵乘法 矩阵乘法规定了一组对矩阵进行乘法运算,以产生新矩阵的规则。...以下图为例(取自 Khan 学院的线性代数课程),矩阵 C 中的每个元素都是矩阵 A 中行与矩阵 B 中列的点积。
线性代数将复杂问题转变为简单、直观和高效的计算问题。下面的例子可以表明实现同样的功能,线性代数的代码表达是如何的简洁与美观。...标量运算 标量运算即为向量和数字间的运算。向量与数的运算就是向量内每一个元素与这一个数进行相应的运算。如下图的一个标量运算: ? 向量间运算 在向量间的运算中,对应位置的值可以组合而产生一个新向量。...向量乘法 向量的乘法有两种类型:一种是点积,另一种是 Hadamard 积。 点积 两个向量的点积结果是一个标量。向量和矩阵(矩阵乘法)的点积在深度学习中是最重要的运算之一。...下面矩阵的乘法是多少? ? 使用 Numpy 进行矩阵乘法运算 在 Numpy 中,np.dot(a,b) 函数可以进行向量和矩阵点积。...从最开始的特征输入,我们会使用一个个高维向量将特征输入到神经网络中,而每一层的权重作为列向量组成一个权重矩阵。
a1与a2之间可以进行加减乘除,b1与b2可以进行逐元素的加减乘除以及点积运算,c1与c2之间可以进行逐元素的加减乘除以及矩阵相乘运算(矩阵相乘必须满足维度的对应关系),而a与b,或者b与c之间不能进行逐元素的加减乘除运算...广播(Boardcasting)是NumPy中用于在不同大小的阵列(包括标量与向量,标量与二维数组,向量与二维数组,二维数组与高维数组等)之间进行逐元素运算(例如,逐元素 加法,减法,乘法,赋值等)的一组规则...NumPy在广播的时候实际上并没有复制较小的数组; 相反,它使存储器和计算上有效地使用存储器中的现有结构,实际上实现了相同的结果。...的错误,说明dot,即点积(不是逐元素运算,对于两个向量,计算的是内积,对于两个数组,则尝试计算他们的矩阵乘积)并不能运用广播机制。...2 x 1B (3d array): 8 x 4 x 3(倒数第二维不匹配)输出数组的维度是每一个维度的最大值,广播将值为1的维度进行“复制”、“拉伸”,如图所示?
为了深刻理解点积运算的含义,下面以我们最熟悉的平面空间中的两个向量 为例,以 为基并创建直角坐标系,则向量中的 即为相应的坐标。...image.png 图 1-4-1 因为 , , , ,所以: 根据几何形式的定义,可以将两个向量的内积理解为一个向量 的大小与另外一个向量 在 的方向上的投影...手工计算向量的点积,可以依据(1.4.3)式完成,我们在这里不对此做重点介绍,因为这是诸多线性代数教材中都少不了的。下面要演示的是如何用程序实现点积计算。...在Numpy中还有另外一个名为inner的函数,它并非是专用于实现前述“内积”运算。 np.inner(a, b) # 输出 26 对于一维数组而言,np.inner和np.dot的计算结果一样。...: 显然,np.dot()所进行的点积计算与矩阵乘法一致(参阅2.1.5节)。
创建数组 通过向NumPy 传递Python列表并使用“ np.array()”,就可以创建一个NumPy 数组(又名:强大的 ndarray)。在此案例中,Python创建的数组如下所示: ?...矩阵的运算 如果两个矩阵大小相同,则可以使用运算符(+-*/)对矩阵进行相加或相乘。NumPy对每一矩阵进行相同的操作: ?...点积 有关运算,在矩阵乘法情况下使用点积是矩阵关键区别。NumPy给每一个矩阵都提供了一个dot() 方法,因此可以用这个方法对其他矩阵执行点积操作: ?...矩阵聚合 聚合矩阵的方式跟聚合向量相同: ? 不仅可以在矩阵中聚合所有值,还可以通过使用axis参数跨行跨列进行聚合: ? 转置与重塑 旋转矩阵是处理矩阵的常见需求之一。...情况常常是这样的——需要取两个矩阵的点积,并且需要对齐共用维度。NumPy数组有一个名为T的便捷属性,能够对矩阵进行转置: ? 在更高级的实操案例中,有可能需要切换特定矩阵的维度。
GPU 是并行操作整个矩阵中的各个像素,而不是一个接一个地去处理单个像素。 向量 向量是关于数字或数据项的一维数组的表示。从几何学上看,向量将潜在变化的大小和方向存储到一个点。...向量 A中的第一个值与向量 B 中的第一个值相加,然后第二个值与第二个值配对,如此循环。这意味着,两个向量必须要有相同的维度才能进行元素操作。...向量乘法 向量乘法有两种:点积(Dot product) 和 Hadamard乘积(Hadamard product)。 点积 两个向量的点积是一个标量。...步骤 矩阵的乘法依赖于点积与各个行列元素的组合。 以下图为例(取自 Khan学院的线性代数课程),矩阵 C中的每个元素都是矩阵 A 中的行与矩阵B中的列的点积。...用这些例子自我测试下 使用 numpy 做矩阵乘法 Numpy 使用函数 np.dot(A,B) 做向量和矩阵的乘法运算。
而如果这个时候,需要进行大量的运算,我们不妨将list列表转换为numpy数组进行计算。...又称之为内积,也就是我们线性代数中常常用到的矩阵运算,在Numpy中的函数为:np.dot(),其具体定义如下所示: np.dot(a,b,out=None) 运算的过程如下所示: 简单的理解点积就是第...,不然无法进行点积运算。...而Numpy改变维度的函数如下表所示: 函数 意义 nd.reshape 将向量nd维度进行改变,不修改向量本身 nd.resize 将向量nd维度进行改变,修改向量本身 nd.T 将向量nd进行转置...而且如果是大量的点积运算,Numpy与普通的方式对比几乎能快400倍的速度。所以,在深度学习,科学计算等领域,Numpy具有绝对的优势。
NumPy中的数组操作 创建数组 我们可以通过将python列表传入np.array()来创建一个NumPy数组(也就是强大的ndarray)。...数组的切片操作 我们可以像python列表操作那样对NumPy数组进行索引和切片,如下图所示: 聚合函数 NumPy为我们带来的便利还有聚合函数,聚合函数可以将数据进行压缩,统计数组中的一些特征值:...(broadcast)进行操作处理: 与算术运算有很大区别是使用点积的矩阵乘法。...NumPy提供了dot()方法,可用于矩阵之间进行点积运算: 上图的底部添加了矩阵尺寸,以强调运算的两个矩阵在列和行必须相等。...我们可以像聚合向量一样聚合矩阵: 不仅可以聚合矩阵中的所有值,还可以使用axis参数指定行和列的聚合: 矩阵的转置和重构 处理矩阵时经常需要对矩阵进行转置操作,常见的情况如计算两个矩阵的点积。
从NumPy数组中获取数据的另一种超级有用的方法是布尔索引,它允许使用各种逻辑运算符,来检索符合条件的元素: ? 注意:Python中的三元比较3NumPy数组中不起作用。...向量的点积、叉积也有运算符: ? 我们也可以进行三角函数、反三角函数、求斜边运算: ? 数组可以四舍五入为整数: ?...这些问题已在math.isclose函数中得到解决。 矩阵运算 NumPy中曾经有一个专用的类matrix,但现在已弃用,因此下面将交替使用矩阵和2D数组两个词。 矩阵初始化语法与向量相似: ?...和一维数组一样,上图的view表示,切片数组实际上并未进行任何复制。修改数组后,更改也将反映在切片中。 axis参数 在许多操作(例如求和)中,我们需要告诉NumPy是否要跨行或跨列进行操作。...在第一部分中,我们已经看到向量乘积的运算,NumPy允许向量和矩阵之间,甚至两个向量之间进行元素的混合运算: ? 行向量与列向量 从上面的示例可以看出,在二维数组中,行向量和列向量被不同地对待。
参考链接: C++程序使用多维数组将两个矩阵相乘 知乎专栏:[代码家园工作室分享]收藏可了解更多的编程案例及实战经验。...NumPy提供了array与matrix两个类用于矩阵运算。array类可以用来处理各种n维数组的数学运算,而matrix类则是专用来进行二位矩阵运算的。这两种类只有以下几个微小的差异。...array √实现元素智能相乘更容易:A*B x执行矩阵点积运算需要使用@:A@B √对于一维array数组,在执行矩阵点积运算时,一维数组会视需要自动调整成所需的1xN或Nx1的矩阵,非常方便...x由于array是Numpy默认的类,部分第三方函数在输入matrix时也可能返回array类。 √A*B进行点积更接近于线性代数的表达。 ...x进行智能元素相乘时相对复杂,需要写成multiply(A,B)代码. x进行智能元素计算时逻辑有点混乱,”/”执行智能元素计算,而星号执行向量点积。
import numpy as np NumPy中的数组操作 创建数组 我们可以通过将python列表传入np.array()来创建一个NumPy数组(也就是强大的ndarray)。...一旦我们创建了数组,我们就可以用其做点有趣的应用了,文摘菌将在下文展开说明。 数组的算术运算 让我们创建两个NumPy数组,分别称作data和ones: ?...聚合函数 NumPy为我们带来的便利还有聚合函数,聚合函数可以将数据进行压缩,统计数组中的一些特征值: ?...与算术运算有很大区别是使用点积的矩阵乘法。NumPy提供了dot()方法,可用于矩阵之间进行点积运算: ? 上图的底部添加了矩阵尺寸,以强调运算的两个矩阵在列和行必须相等。...不仅可以聚合矩阵中的所有值,还可以使用axis参数指定行和列的聚合: ? 矩阵的转置和重构 处理矩阵时经常需要对矩阵进行转置操作,常见的情况如计算两个矩阵的点积。
import numpy as np NumPy中的数组操作 创建数组 我们可以通过将python列表传入np.array()来创建一个NumPy数组(也就是强大的ndarray)。...数组的切片操作 我们可以像python列表操作那样对NumPy数组进行索引和切片,如下图所示: 聚合函数 NumPy为我们带来的便利还有聚合函数,聚合函数可以将数据进行压缩,统计数组中的一些特征值...(broadcast)进行操作处理: 与算术运算有很大区别是使用点积的矩阵乘法。...NumPy提供了dot()方法,可用于矩阵之间进行点积运算: 上图的底部添加了矩阵尺寸,以强调运算的两个矩阵在列和行必须相等。...我们可以像聚合向量一样聚合矩阵: 不仅可以聚合矩阵中的所有值,还可以使用axis参数指定行和列的聚合: 矩阵的转置和重构 处理矩阵时经常需要对矩阵进行转置操作,常见的情况如计算两个矩阵的点积。
在这篇文章中,在我们应用到机器学习模型之前,我们会看到 NumPy 的主要使用方式以及它如何展示不同类型的数据(表格,图像,文本等) import numpy as np 创建数组 我们可以通过传递一个...点积(Dot Product) 和前面的算术运算的一个关键区别是在对矩阵进行这类乘法(传统意义的矩阵相乘(译者注))时使用点积操作时,NumPy 为矩阵提供了一个 dot() 方法,可以计算出矩阵的点积...你可以想象是进行了如下的操作: ? 矩阵索引 当我们使用矩阵的时候索引和切片功能将更加有用: ? 矩阵聚合 与向量(数组)相同,可以对矩阵进行类似的聚合操作: ?...比如当需要计算两个矩阵的点积的时候可能需要对齐矩阵相邻的维度(使矩阵能够进行点积运算)。NumPy 的数组有一个很方便的属性 T 可以获取矩阵的转置: ?...因此,在将这些词喂入模型之前,需要先将她们替换为对应的词嵌入向量(本例中使用50维度的 word2vec 词嵌入) ? 可以看出这个 NumPy 数组有 [词嵌入维度 * 序列长度] 的维数。
NumPy中的数组操作 创建数组 我们可以通过将python列表传入np.array()来创建一个NumPy数组(也就是强大的ndarray)。...一旦我们创建了数组,我们就可以用其做点有趣的应用了,文摘菌将在下文展开说明。 数组的算术运算 让我们创建两个NumPy数组,分别称作data和ones: ?...聚合函数 NumPy为我们带来的便利还有聚合函数,聚合函数可以将数据进行压缩,统计数组中的一些特征值: ?...与算术运算有很大区别是使用点积的矩阵乘法。NumPy提供了dot()方法,可用于矩阵之间进行点积运算: ? 上图的底部添加了矩阵尺寸,以强调运算的两个矩阵在列和行必须相等。...不仅可以聚合矩阵中的所有值,还可以使用axis参数指定行和列的聚合: ? 矩阵的转置和重构 处理矩阵时经常需要对矩阵进行转置操作,常见的情况如计算两个矩阵的点积。
我将按照以下顺序讨论每个矩阵操作。 内积 点积 转置 迹 秩 行列式 逆 伪逆 扁平化 特征值和特征向量 内积 Inner product 内积接收两个大小相等的向量,并返回一个数字(标量)。...这是通过将每个向量中相应的元素相乘并将所有这些乘积相加来计算的。在numpy中,向量被定义为一维numpy数组。 为了得到内积,我们可以使用np.inner()。...点积 Dot product 点积是为矩阵定义的。它是两个矩阵中相应元素的乘积的和。为了得到点积,第一个矩阵的列数应该等于第二个矩阵的行数。 有两种方法可以在numpy中创建矩阵。...ndarray和matrix对象的点积都可以使用np.dot()得到。...如果你真的想转置一个向量,它应该被定义为一个带有双方括号的二维numpy数组。
领取专属 10元无门槛券
手把手带您无忧上云