在Python中转置矩阵

在Python中转置矩阵

我试图在Python中创建一个矩阵转置函数。矩阵是一个二维数组,表示为整数列表。例如,下面是一个2X3矩阵(即矩阵的高度为2,宽度为3):

A=[[1, 2, 3],
   [4, 5, 6]]

要将索引中的JTH项转置,应将其转化为JTH索引中的第一项。下面是上面的示例的换位方式:

>>> transpose([[1, 2, 3],
               [4, 5, 6]])[[1, 4],[2, 5],[3, 6]]>>> transpose([[1, 2],
               [3, 4]])[[1, 3],[2, 4]]

我该怎么做?


回首忆惘然
浏览 1490回答 3
3回答

噜噜哒

你可以用zip带着*使矩阵转置:>>> A = [[ 1, 2, 3],[ 4, 5, 6]]>>> zip(*A)[(1, 4), (2, 5), (3, 6)]>>> lis  = [[1,2,3], ... [4,5,6],... [7,8,9]]>>> zip(*lis)[(1, 4, 7), (2, 5, 8), (3, 6, 9)]如果希望返回的列表为列表:>>> [list(x) for x in zip(*lis)][[1, 4, 7], [2, 5, 8], [3, 6, 9]]#or>>> map(list, zip(*lis))[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

汪汪一只猫

是否因懒惰和使用NumPy数组的转置功能而获奖?import numpy as np a = np.array([(1,2,3), (4,5,6)])b = a.transpose()

Helenr

如果我们想返回相同的矩阵,我们会写:return [[ m[row][col] for col in range(0,width) ] for row in range(0,height) ]这样做是通过遍历每一行并返回每个列中的每个元素来迭代矩阵m。所以命令应该是:[[1,2,3],[4,5,6],[7,8,9]]现在,对于问题3,我们希望逐列,返回每一行中的每个元素。所以命令应该是:[[1,4,7],[2,5,8],[3,6,9]]因此,只需切换迭代顺序:return [[ m[row][col] for row in range(0,height) ] for col in range(0,width) ]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python