为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中转置矩阵

在Python中转置矩阵

回首忆惘然 2019-07-20 14:25:17
在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]]我该怎么做?
查看完整描述

3 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

你可以用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]]


查看完整回答
反对 回复 2019-07-20
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

是否因懒惰和使用NumPy数组的转置功能而获奖?

import numpy as np

a = np.array([(1,2,3), (4,5,6)])b = a.transpose()


查看完整回答
反对 回复 2019-07-20
?
Helenr

TA贡献1780条经验 获得超3个赞

如果我们想返回相同的矩阵,我们会写:

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) ]


查看完整回答
反对 回复 2019-07-20
  • 3 回答
  • 0 关注
  • 1440 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信