02 数组翻转 从数学角度而言,二维数组就是矩阵。在矩阵操作中,有一项叫转置,是将矩阵元素位置的行列互换,比如原来在(1,2)这个位置的元素,会和(2,1)这个位置的元素进行互换。...在Numpy中我们有两种方式来实现数组的翻转: (1)transpose函数,将被翻转目标A放到函数中,像这样np.transpose(A)就可以了。...03 数组连接 连接数组顾名思义是将两个或多个数组按照一定的方式连接起来,常用的数组连接有一下几种函数: (1)concatenate函数,使用方式是把被连接的数组依次放进去,用逗号隔开,再用括号括起来...axis默认值是0,意思是沿着第一个轴连接,如果你设置成1,那么就是沿着第二个轴连接。 (2)stack函数,它和concatenate函数有一点不同。...第一个是concatenate函数,axis=1表示沿着第二个轴,也就是水平连接;第二个是stack函数,同样是沿着第二个轴,在这里我们省略了axis参数;第三个是hstack,竖直方向连接;第四个是vstack
这个挺常见的我不就不多说了。 ? 矩阵方程组的求解是,把方程组每一个系数组成矩阵 A,根据 A 这个矩阵本身的特性就可以直接判断这个方程组有没有解、有多少解。还有无解的情况。 ?...这是矩阵方程组的一些求解,比较常规的,像 AX=b 这个线性方程组一般怎么解呢?常规方法:两边直接乘 A 的逆矩阵。它有个前提:A 的逆必须存在,也就是说 A 里每一行、每一列不能线性相关。...对角线的第一个元素是作用在 X 轴上面的,X 轴沿着 Y 轴作了一个对折,也就是镜面反射,原来 M 在这儿,翻过来到这,就是这个矩阵的作用;Y 轴上没有任何变化,因为是 1,不放大也不缩小。...这个跟刚才相比的话,多了右上角一个元素 0.3,这是一个上三角矩阵,是什么意思呢?看一下图的结果,沿着 Y 轴方向是不变的,X 方向就做了一种错切,也叫推移。...像 A 这个矩阵,做一个特征分解之后,两个特征值是 3 和 1,然后左边右边对应的就是一个特征向量。比如说左边矩阵的第一个列向量就是 3 这个特征值对应的特征向量,不信你可以试一下。
在矩阵操作中,有一项叫转置,是将矩阵元素位置的行列互换,比如原来在(1,2)这个位置的元素,会和(2,1)这个位置的元素进行互换。...axis默认值是0,意思是沿着第一个轴连接,如果你设置成1,那么就是沿着第二个轴连接。 stack函数,它和concatenate函数有一点不同。...第一个函数capitalize将首字母转换成大写,目的是针对写文章的情景,需要把句子中第一个单词的首字母大写,比较实用。...第二个函数title是让字符串的每个单词的第一个字母变成大写,和函数名呼应,这个函数的功能是针对文章标题用的,可以把字符串方便转换成文章的标题。 第三个函数lower是将数组中每个元素转换成小写。...第一个是求沿着纵轴每个列中最小的元素,因为数组有四列,因而会选出四个数字;第二个是求沿着横轴每个行中最大的元素,因为数组有三行,因而会选出三个数字。最后我们没有设定轴,因为会返回A数组中最大的元素。
研究团队将首先介绍可视化方法,通过可视化一些简单的矩阵乘法、和表达式来建立直觉,然后深入研究一些更多的示例。 为什么这种可视化方式更好?...mm的可视化方法基于这样一个前提,即矩阵乘法从根本上说,是一种三维运算。...矩阵-向量乘积 分解为矩阵向量乘积的matmul,看起来像一个垂直平面(左参数与右参数每列的乘积),当它水平扫过立方体内部时,将列绘制到结果上。 即使在简单的例子中,观察分解的中间值也会非常有趣。...通过几何图形,我们可以清楚地看到表达式中哪些参与者被分割,哪些参与者保持完整: 第二个例子,展示了如何通过沿着其 j 轴划分左子表达式、沿着其 i 轴划分右子表达式以及沿着其 k 轴划分父表达式来并行化二进制表达式...是一个融合了向量-矩阵乘积的链条,证实了从输入到输出的整个左关联链条沿着共享的 i 轴是层状的这一几何直觉,并且可以并行化。
,下例中生成一个9*9乘法表 2 显示、创建、改变数组元素的属性、数组的尺寸等 3 改变数组的尺寸 reshape方法,第一个例子是将43矩阵转为34矩阵,第二个例子是将行向量转为列向量。...注意在numpy中,当某个轴的指定为-1时,此时numpy会根据实际的数组元素个数自动替换-1为具体的大小,如第二例,我们指明了c仅有一列,而b数组有12个元素,因此c被自动指定为12行1列的矩阵,即一个...4 元素索引和修改 简单的索引形式和切片: 当使用布尔数组b作为下标存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素。...3)当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。 感觉说的不太明白,于是还是用实例说话好了。...outer乘积计算的列向量和行向量的矩阵乘积。 解线性方程组(solve):solve(a,b)有两个参数a和b。
本文让我们来了解一下机器学习中最常用的一种降维方法PCA。...例如我们有一组数据:{1, 2, 3, 4, 5} 可以计算出平均数为:(1+2+3+4+5)/5=3 各个数与平均数差的平方和为:10 方差为:10/5=2 很简单的计算过程我们就能得到一组数据的方差了...协方差矩阵的特征向量其实就是一些列的坐标轴,将数据映射到这些坐标轴之后,我们将会得到最大的方差(这意味着更多的信息),他们就是我们要求的主成分,特征值其实就是特征向量的系数,它代表了每个特征向量包含了多少信息量...五、将数据映射到新的主成分坐标系中 我们将使用从协方差矩阵中算出来的特征向量形成主成分矩阵,并将原始数据映射到主成分矩阵对应的坐标轴上 ,这就叫做主成分分析。...PCA的流程总结如下: 1)将原始数据按列组成n行m列矩阵X 2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值 3)求出协方差矩阵 4)求出协方差矩阵的特征值及对应的特征向量 5)将特征向量按对应特征值大小从上到下按行排列成矩阵
所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。 很多时候可以声明 axis。...axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。 ...当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。 简单理解:对两个数组,分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足: 数组拥有相同形状。...numpy.power() numpy.power() 函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。 ...考虑数组[1,2,3,4]和相应的权重[4,3,2,1],通过将相应元素的乘积相加,并将和除以权重的和,来计算加权平均值。 标准差 标准差是一组数据平均值分散程度的一种度量。
然后我们谈到从单个矩阵中反演一组基本变换。最后,导出了一种方法,可以绕任意轴旋转实体。 4.2.1 欧拉变换 此变换是构建矩阵,以将你自己(即相机)或任何其他实体定向到某个方向的直观方式。...很难将两组欧拉角组合使用。例如,一组和另一组之间的插值并不是对每个角度进行插值的简单问题。事实上,两组不同的欧拉角可以给出相同的方向,因此任何插值都不应该旋转对象。...将方程4.22中的三个旋转矩阵连接起来得到: image.png 显而易见,俯仰角参数由 给出。...我们已经介绍了两种分解,即为刚体变换导出平移和旋转矩阵(第4.1.6节)和从正交矩阵导出欧拉角(第4.2.2节)。 正如我们所见,反推平移矩阵很简单,因为我们只需要 矩阵的最后一列中的元素。...Goldman[550]提出了另一种绕任意标准化轴 旋转 弧度的方法。在这里,我们简单介绍一下他的变换: image.png 在4.3.2节中,我们提出了另一种解决这个问题的方法,使用四元数。
所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。 很多时候可以声明 axis。...axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。 ...当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。 ...加权平均值 = (1*4+2*3+3*2+4*1)/(4+3+2+1) 标准差 标准差是一组数据平均值分散程度的一种度量。 标准差是方差的算术平方根。 ...在 Python 中,为了使当进行赋值操作时,两个变量互补影响,可以使用 copy 模块中的 deepcopy 方法,称之为深拷贝。
定理2:方阵\(A\)的行列式可沿着某一行或某一列的元素展开,形式如下: 沿着第\(i\)行展开:\[det(A)=\sum_{k=1}^n(-1)^{k+i}a_{ik}det(A_{i,k})\...平方根法(Cholesky decomposition) 一种矩阵运算方法,又叫Cholesky分解。所谓平方根法,就是利用对称正定矩阵的三角分解得到的求解对称正定方程组的一种有效方法。...这里不会详细介绍该方法的计算方法,简单说明一下该方法会带来哪些好处。 1.求逆矩阵 我们都知道求一个矩阵的逆矩阵是一个非常耗时的过程,而对于一个上(下)三角矩阵而言,求逆矩阵就简单很多。...理解成将坐标轴体系由\(p_1,p_2\)坐标体系逆向还原成传统的\(e_1,e_2\)坐标体系。...没错,该步骤就表示在将坐标轴还原到传统意义上的坐标轴后对LB的单位圆按照特征值大小进行伸缩。 RB→LT: 对坐标轴进行变换。 参考 理解矩阵(一) 理解矩阵(二) 理解矩阵(三)
在 Fortran 中,移动二维数组元素时,第一个索引是变化最快的索引。当第一个索引改变时,矩阵按列存储在内存中一列一列地变化。这就是为什么 Fortran 被认为是一种基于列的语言。...如果不指定轴,NumPy 将沿着输入数组的所有轴反转内容。...随着第一个索引的变化移动到下一行,矩阵按列存储。这就是为什么 Fortran 被认为是一种列主语言。另一方面,在 C 中,最后的索引变化最快。矩阵按行存储,使其成为一种行主语言。...对于一个四列数组,你将获得四个值作为结果。 阅读更多关于数组方法的信息。 创建矩阵 你可以传递 Python 的列表列表来创建一个代表它们的 2-D 数组(或“矩阵”)在 NumPy 中表示。...如果您不指定轴,NumPy 将沿着输入数组的所有轴反转内容。
▌矩阵(Matrix) ---- 矩阵是一个有序的二维数组,它有两个索引。 第一个指向行,第二个指向列。 例如,M23表示第二行和第三列中的值,在上面的黄色图片中为“8”。 矩阵可以有多个行和列。...请注意,向量也是一个矩阵,但只有一行或一列。 在黄色图片的例子中的矩阵也是2×3维的矩阵(行*列)。 下面你可以看到矩阵的另一个例子及其符号: ?...张量(Tensor) 张量是一组数字,排列在一个规则的网格上,具有不同数量的轴。 张量有三个指标,第一个指向行,第二个指向列,第三个指向轴。 例如,V232指向第二行,第三列和第二个轴。...它的计算方法如下: 将第二个矩阵拆分为列向量,然后将第一个矩阵分别与这些向量中的每一个相乘。 然后你把结果放在一个新的矩阵中。 下面的图片逐步解释了这一点: ? 下图进行总结: ?...这基本上是沿着45度轴线的矩阵的镜像。 获得矩阵的转置相当简单。 它的第一列仅仅是移调矩阵的第一行,第二列变成了矩阵移调的第二行。 一个m * n矩阵被简单地转换成一个n * m矩阵。
对那些维度比二维更高的数组,hstack沿着第二个轴组合,vstack沿着第一个轴组合,concatenate允许可选参数给出组合时沿着的轴。 ...将一个数组分割(split)成几个小数组 使用hsplit你能将数组沿着它的水平轴分割,或者指定返回相同形状数组的个数,或者指定在哪些列后发生分割: >>> a = floor(10*random.random...传统上我们用矩形的行和列表示一个二维数组或矩阵,其中沿着0轴的方向被穿过的称作行,沿着1轴的方向被穿过的是列。...假如我们想要一个数组的第一列和第三列,一种方法是使用列表切片: >>> A[:,[1,3]] array([[ 1, 3], [ 5, 7], [ 9, 11]])...还有一种方法是通过矩阵向量积(叉积)。
对那些维度比二维更高的数组, hstack沿着第二个轴组合, vstack沿着第一个轴组合, concatenate允许可选参数给出组合时沿着的轴。...将一个数组分割(split)成几个小数组 使用 hsplit你能将数组沿着它的水平轴分割,或者指定返回相同形状数组的个数,或者指定在哪些列后发生分割: >>> a = floor(10*random.random...传统上我们用矩形的行和列表示一个二维数组或矩阵,其中沿着0轴的方向被穿过的称作行,沿着1轴的方向被穿过的是列。...假如我们想要一个数组的第一列和第三列,一种方法是使用列表切片 >>> A[:,[1,3]] array([[ 1, 3], [ 5, 7], [ 9, 11]]) 稍微复杂点的方法是使用...还有一种方法是通过矩阵向量积(叉积)。
2.NumPy数组存储在一个均匀连续的内存块中,访问更快;NumPy中的矩阵计算可以采用多线程的方式,计算更快。...补充: ”1矩阵“ np.ones((row,col)) 8.1.4、numpy 哪个是行、列? 最后两组数为行和列。...倒是第一组为列,倒数第二组为行(若存在) 8.1.5、numpy 如何进行数据类型转换?...arr 为三维矩阵,初始时刻存在的三个轴下标分别0、1、2,基于下标完成轴转置,如下图: 8.1.11、numpy where 函数 res = [x if c else y for x,y,...以 arr 对象为例: arr.mean()#对所有元素 arr.mean(axis = 0)#0轴沿着行的方向垂直向下运算 arr.mean(axis = 1)#1轴沿着列的方向水平延伸运算 arr.sum
对那些维度比二维更高的数组,hstack沿着第二个轴组合,vstack沿着第一个轴组合,concatenate允许可选参数给出组合时沿着的轴。 ...将一个数组分割(split)成几个小数组 使用hsplit你能将数组沿着它的水平轴分割,或者指定返回相同形状数组的个数,或者指定在哪些列后发生分割: >>> a = floor(10*random.random...传统上我们用矩形的行和列表示一个二维数组或矩阵,其中沿着0轴的方向被穿过的称作行,沿着1轴的方向被穿过的是列。...假如我们想要一个数组的第一列和第三列,一种方法是使用列表切片: >>> A[:,[1,3]] array([[ 1, 3], [ 5, 7], [ 9, 11]]) ...还有一种方法是通过矩阵向量积(叉积)。
axis=0表示沿着第一个轴(行)的方向进行求和,即对每一列元素进行求和。结果赋值给变量c2。...参数axis可以指定的值包括以下几种情况: 整数:可以使用0、1、2、...来指定对应的轴。其中,0表示沿着第一个轴(行)的方向进行操作,1表示沿着第二个轴(列)的方向进行操作,以此类推。...例如,对于一个二维数组,可以通过axis=0指定沿着行的方向,axis=1指定沿着列的方向。 元组:可以使用元组来指定多个轴进行操作。...例如,axis=(0, 1)表示同时沿着第一个轴(行)和第二个轴(列)的方向进行操作。 None(默认值):当axis参数为None时,将对整个数组进行求和,返回一个标量值。...对于二维数组,axis=0表示沿着第一个轴(行)的方向进行求和,即逐列求和。
简单介绍完 gather 函数之后,来看一个简单的小例子:一次将下面 2D 张量中所有红色的元素采集出来。...[x215h32ivd.png] 2D 张量可以看成矩阵,2D 张量的第一个维度为矩阵的行 (dim = 0),2D 张量的第二个维度为矩阵的列 (dim = 1),从左向右依次看三个红色元素在矩阵中的具体位置...假设此时列索引的规律是已知并且固定的,我们只需要给出这些红色元素在行上的索引号就可以将这些红色元素全部采集出来。 至此,对于这个 2D 张量的小例子,已知了输入张量和指定行上的索引号。...现在假设此时行索引的规律是已知并且固定的,我们只需要给出这些红色元素在列上的索引号就可以将这些红色元素全部采集出来了。...; 如果沿着轴的每个维度采集 N 个元素,则 index 对应轴上的长度为 N (N ≥ 1)。
接下来,我们需要找到某种可以把虚拟空间坐标转化回归依化设备坐标的方法,让OpenGL可以正确的渲染它们。这种转换应该把屏幕方向计算在内,以使图像在竖屏模式和横屏模式看上去都一样。...为了更高的理解这种投影是做什么的,想象一下,在我们的场景中有一个火车轨道,直接从空中俯瞰,这些轨道看起来是这样的: ? 还有一种特殊类型的正交投影,被称为等轴测投影,它是从侧角观察一种正交投影。...规则就是矩阵第一行乘以向量第一列,以第一行为例:矩阵第一行第一个元素乘以向量第一列第一个元素,加上矩阵第一行第二个元素乘以向量第一列第二个元素,加上矩阵第一行第三个元素乘以向量第一列第三个元素,加上矩阵第一行第四个元素乘以向量第一列第四个元素...4.5平移矩阵 既然理解了单位矩阵,让我们看一个非常简单的矩阵类型---平移矩阵。它在OpenGL里十分常用。使用这种类型的矩阵,我们可以把一个物体沿着指定的距离移动。...5.正交投影 要定义正交投影,我们将使用Android的Matrix类,它在android.opengl包中。这个类有一个称为orthoM()的方法,它可以为我们生成一个正交投影。
领取专属 10元无门槛券
手把手带您无忧上云