反转矩阵值

时间:2014-03-14 05:38:08

标签: python

我有一个

a=[[1,2,3],[4,5,6],[7,8,9]]

我想打印" a"像柱状一样的矩阵形式:

 1 4 7 
 2 5 8
 3 6 9

有没有办法做到这一点?

4 个答案:

答案 0 :(得分:4)

您可以使用zip转置它:

print zip(*a)
>>> [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

它适用于任何形状,而不仅仅是方形矩阵。它给出了狡猾的结果的唯一情况是a有一行。

您可以使用join

以所需的格式打印
for el in a:
    print " ".join(str(s) for s in el)

或者,正如@ssm所建议的那样,单行:

print '\n'.join(' '.join(map(str,x)) for x in zip(*a))

最后,使用numpy:

print '\n'.join(' '.join(map(str,x)) for x in np.transpose(a))

答案 1 :(得分:2)

如果您只想打印,可以执行以下操作,但我确实假设矩阵是矩形的。

a=[[1,2,3],[4,5,6],[7,8,9]]

for i in xrange(len(a[0])):
   print " ".join(str(a[j][i]) for j in xrange(len(a)))

答案 2 :(得分:1)

您可以打印row-major矩阵,如下所示:

def print_row_maj(m):
    for row in m:
       print ' '.join(str(x) for x in row)

将其与sashkello's answer相结合,打印您的转置(非倒置!)矩阵。

def transpose(m):
    return zip(*m)

a=[[1,2,3],[4,5,6],[7,8,9]]    

print_row_maj( transpose(a) )

答案 3 :(得分:0)

var arrnew = new Array();
arrnew = [[2, 3, 4], [4, 5, 7], [5, 6, 9]];

for (var i = 0; i < arrnew.length; i++) {
console.log(arrnew[i][0] + " " + arrnew[i][1] + " " + arrnew[i][2]);

}