首页
学习
活动
专区
圈层
工具
发布

「Python」矩阵、向量的循环遍历

对DataFrame对象使用该方法的话就是对矩阵中的每一行或者每一列进行遍历操作(通过axis参数来确定是行遍历还是列遍历);对Series对象使用该方法的话,就是对Series中的每一个元素进行循环遍历操作...使用sum函数 Out[7]: a 60 b 90 dtype: int64 In [10]: df.apply(lambda s: s.min(), axis=1) # 对df中的每一行...(DataFrame)的applymap()方法可以对矩阵中每一个元素进行遍历迭代操作: In [18]: df.applymap(lambda x: x * 2) Out[18]: a...除了对矩阵使用apply()方法进行迭代外,还可以.iteritems()、.iterrows()与.itertuples()方法进行行、列的迭代,以便进行更复杂的操作。...., dtype='<U4') In [30]: df Out[30]: a b 0 10 20 1 20 30 2 30 40 在函数前加上@np.vectorize语法糖也是同样的效果

2.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    矩阵图的深度广度遍历

    图的常用表示方法就是矩阵和邻接表。 矩阵通常使用与规整的,且数据量较小的图,这种图直观上方便的表示出了图之间节点的相互关系。...int numVer,numEdge;//顶点数,和边数 }Graph_Matrix; 矩阵图的深度优先遍历 为了防止图中有不连通的子图,因此每个节点顺序的遍历一次,每次采用深度优先遍历其联通子图...有点类似书中遍历玩父节点,直接遍历他的左边孩子,然后再回来.... int DFS(Graph_Matrix *g,int i){ int j; visited[i] = 1;...visited[i]) DFS(g,i); } } 矩阵图的广度优先遍历 广度优先遍历,主要依赖于一个队列,每次遍历一个父节点,寻找他的子节点一次放入队列中,遍历完,读取队列中的队头...,在此读取其子节点,有点类似树中遍历父节点后,在遍历他的孩子节点。

    687100

    图的遍历(上)——邻接矩阵表示

    概述 图作为数据结构书中较为复杂的数据结构,对于图的存储方式分邻接矩阵和邻接表两种方式。在这篇博客中,主要讲述邻接矩阵下的图的深度优先遍历(DFS)与广度优先遍历(BFS)。...---- 广度优先遍历(BFS) BFS 算法的思想是:对一个无向连通图,在访问图中某一起始顶点 v 后,由 v 出发,依次访问 v 的所有未访问过的邻接顶点 w1, w2, w3, …wt;然后再顺序访问...[vertex] = 1; //相应位的访问数组置1 for(int i = 1 ; i Nv ; i++){ //依次递归遍历当前结点的未被访问的邻接点...(DFS)——非递归版本 非递归算法: 1)首先初始化待使用栈,然后将第一个结点入栈 2)然后只要栈不空,重复下面的操作:将栈顶元素弹出,然后看该元素是否访问过 3)若没访问过,则访问,置访问标记...:"<<endl; int nv,ne; cin>>nv>>ne; Graph graph(nv,ne); cout输入第一个访问的结点:"<<endl;

    1.2K20

    使用 Python 按行和按列对矩阵进行排序

    在本文中,我们将学习一个 python 程序来按行和按列对矩阵进行排序。 假设我们采用了一个输入的 MxM 矩阵。我们现在将使用嵌套的 for 循环对给定的输入矩阵进行逐行和按列排序。...在函数内部,使用 for 循环遍历矩阵的行。 使用另一个嵌套的 for 循环遍历当前行的所有列。 使用 if 条件语句检查当前元素是否大于下一个元素。 如果条件为 true,则使用临时变量交换元素。...创建另一个函数 transposeMatrix() 通过接受输入矩阵 m(行数)作为参数来获取矩阵的转置。 使用 for 循环遍历矩阵的行。...使用另一个嵌套的 for 循环遍历窗体(行 +1)列到列的末尾。 将当前行、列元素与列、行元素交换。...创建一个函数 printingMatrix() 通过使用嵌套的 for 循环遍历矩阵的行和列来打印矩阵。 创建一个变量来存储输入矩阵。

    9.8K50

    如何在矩阵的行上显示“其他”【2】

    很明显,我们想的是让others在最后一行: 这样,前10名是放在一起的,others放在最后一行。...真实的业务场景往往就是如此,我们只关心前10名的情况,前10行就给我老老实实地放这10个类别,剩下的放在最后一行,对于others,我关心的只是份额,甚至我一点也不关心,因为加在一起都不足10%。...这就意味着我们并不是按照sales进行排序,因为按照sales排序,others应该显示在第6行,这显然跟第一张图相同了。 要注意,这三列看上去并没有排序。...而按照表中的列进行排序,我们完全可以使用“按列排序”的办法来实现按照其他列来排序,所以这个时候选择子类别2,进行“按列排序”,我们选择表中的sales.rankx,这样就用sales.rankx的大小来表示子类别的显示...比如,当使用切片器时,我选择不同的年份,子类别的排序是不同的,甚至显示的子类别也不相同: 上图我们要特别注意,不论我选择哪一年,others永远是在最后一行,而且上面的10行数据都是按照从大到小的顺序排列

    2.5K10

    解析卷积高速计算中的细节,有代码有真相

    大多数现代DL库使用行主序存储。这意味着同一行的连续元素彼此相邻存储。更一般地说,对于多维,行主序意味着当线性扫描内存时,第一个维度的变化最慢。 那么维度本身的顺序呢?...毕竟,卷积是带有输入padding的滤波器的点积。如果我们把滤波器放到一个二维矩阵中,把输入的小patch放到另一个矩阵中,然后把这两个矩阵相乘,就会得到相同的点积。...每次从主存中获取数据时,CPU都会自动将数据及其相邻的内存加载到缓存中,希望利用引用的局部性。 ? 你应该注意的第一件事是我们访问数据的模式。我们在A上按行遍历,在B上按列遍历。 ?...对于A的每一行,我们循环遍历整个B。在B中每进行一步,我们将加载它的一些新列并从缓存中删除一些旧列。当我们到达A的下一行时,我们从第一列开始重新开始。...谢天谢地,我们可以分解子矩阵上的矩阵乘法。计算一个C中的小的r×c块,只需要A中的r行和B中的C列。让我们把C分成6x16的小块。

    1.5K20

    如何在矩阵的行上显示“其他”【1】

    想要的结果如下(前10名显示,后面的为others): 思路上其实非常简单:通过构建一个新的表,将销售额度量值放进去,排序,前10名用原先的类别,后面的都替换为others,拖到表中排序即可。...其实所有的问题都可以拆解为一步一步地进行设置,然后使用不同的语言来实现这些步骤,PowerBI也不过就是一个工具,重点还是上面的思路,用任何其他编程语言其实都得按照上面的思路进行,这一点我们无法否认。...上面这个问题其实简单,解决也很快速,但是我会分为多篇文章来写,每一篇文章的最后我会放一个图,用该篇文章的办法是做不到的,但是只要再多写几步,就可以完成,大家可以先进行思考,请大家持续关注。...基本上满足了小白的要求。 当然,美中不足的是,因为others这一行在中间,看着就有点别扭。...按照我个人的习惯,是前10行从大到小排列的子类别,最后一行显示others,如下图所示: 这个问题解决起来也不是很困难,关注【学谦数据运营】,下一篇详细解

    2.7K20

    深度学习库使用了这些「黑魔法」

    大部分现代深度学习库使用行主序作为存储顺序。这意味着同一行的连续元素被存储在相邻位置。对于多维度而言,行主序通常意味着:在线性扫描内存时第一个维度的变化速度最慢。 那么维度本身的存储顺序呢?...如果我们将滤波器展开为2-D矩阵,将输入块展开为另一个2-D矩阵,则将两个矩阵相乘可以得到同样的数字。与CNN不同,近几十年来矩阵相乘已经得到广泛研究和优化,成为多个科学领域中的重要问题。...将图像块展开为矩阵的过程叫做im2col(image to column)。我们将图像重新排列为矩阵的列,每个列对应一个输入块,卷积滤波器就应用于这些输入块上。 下图展示了一个正常的3x3卷积: ?...我们按照下图A的形式逐行遍历数据,按照下图B的形式逐列遍历数据。 ? 它们的存储也是行优先的,因此一旦我们找到 A[i, k],则它在该行中的下一个元素A[i, k+1]已经被缓存了。...庆幸的是,我们可以将矩阵相乘分解为子矩阵。要想计算 C 的r×c平铺,我们仅需要A的r行和B的c列。

    1.2K30

    pandas按行按列遍历Dataframe的几种方式

    遍历数据有以下三种方法: 简单对上面三种方法进行说明: iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问。...itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率高。...iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问。...iterrows(): for index, row in df.iterrows(): print(index) # 输出每行的索引值 1 2 row[‘name’] # 对于每一行,通过列名...name访问对应的元素 for row in df.iterrows(): print(row[‘c1’], row[‘c2’]) # 输出每一行 1 2 3 按行遍历itertuples()

    9.8K20

    【数据结构】数组和字符串(八):稀疏矩阵的链接存储:十字链表的创建、插入元素、遍历打印(按行、按列、打印矩阵)、销毁

    关于循环链表: 【数据结构】线性表(三)循环链表的各种操作(创建、插入、查找、删除、修改、遍历打印、释放内存空间) 在稀疏矩阵的十字链表中,每一行和每一列都有一个表头节点。...释放所有节点的内存: 遍历每一行,从第一行到最后一行: 通过行表头节点数组获取当前行的行链表头节点。...将当前行的行链表头节点更新为要插入的节点。 否则,遍历当前行的行链表,直到找到插入位置: 将要插入的节点的右指针指向当前节点的右指针。 将当前节点的右指针指向要插入的节点。..., current->value); current = current->right; } printf("\n"); } } 从第一行开始遍历稀疏矩阵的每一行...通过行表头节点数组获取当前行的行链表头节点。 遍历当前行的行链表,打印每个节点的行、列和值。 打印换行符。

    1.4K10

    如何让你的矩阵运算速度提高4000+倍

    向量化函数对输入数组的连续元组(如 python map 函数)计算 pyfunc,但它使用 numpy 的广播规则。 向量化输出的数据类型是通过使用输入的第一个元素调用该函数来确定的。...vectorize可以改造你的python函数,改造后的函数可以直接作用于numpy向量矩阵之中。...另外细心的小伙伴可能发现了,np.vectorize本质上是一个闭包,所以其实你可以把它当成一个装饰器来使用,类似这样: @np.vectorize def myfilter(dem, threshold...本质上矩阵运算的难点在于 逻辑分支,也就是在矩阵中实现类似于if-else的逻辑运算,只要你能在矩阵中实现了逻辑分支,任何分支内的运算步骤都可以使用矩阵运算轻易地实现。...例如感兴趣的朋友可以细细品一下下面这段uv转风速风向的函数的实现,它可以直接传入矩阵形式的uv,使用索引赋值快速计算出风速和风向,已经经过了长期的实战检验,可直接抄走使用: def cal_wnswnd

    1.6K10

    小朋友学数据结构(16):基于邻接矩阵的的深度优先遍历和广度优先遍历

    2.png 上面这个矩阵中,0表示每个顶点没有到达自己的路径。1表示两个顶点之间有路径,无穷大表示两个顶点之间没有路径。 假如按照程序计数习惯,行或列都从0数起。...第0行第0列为0,表示A到它本身之间没有路径(这是人为规定的,因为A到它自身不需要路径)。 第0行第1列为1,表示顶点A和B之间有路径。 第0行第5列为1,表示顶点A和顶点F之间有路径。...第0行其他列为无穷大,表示A到其它点之间没有路径。 …… 因为是无向图,邻接矩阵必然有两个特点: ① 对角线(左上角到右下角)上的元素值全为0.表示每个点到它自身没有(或不需要)路径。...可以使用递归的方法进行深度遍历。...visited[j]) DFS(G, j);/* 对未访问的邻接顶点递归调用 */ } /* 邻接矩阵的深度遍历算法 */ void DFSTraverse(MGraph

    6.5K50
    领券