【问题标题】:Invert the matrix values [duplicate]反转矩阵值[重复]
【发布时间】:2014-03-14 05:38:07
【问题描述】:

我有一个

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

我想打印类似矩阵形式的“a”,但要按列打印:

 1 4 7 
 2 5 8
 3 6 9

有什么办法吗?

【问题讨论】:

    标签: python


    【解决方案1】:

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

    【讨论】:

    • 另外,它需要像这样转换成字符串:'\n'.join( [' '.join(map(str,x)) for x in zip(*a)] )。善用 zip(*)!
    【解决方案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)))
    

    【讨论】:

    • @JonathonReinhart,很公平。我是在字面上解释这个问题。如果用户接受另一个答案,我将删除这个。
    • @user2864740,我删除了硬编码的边界。
    【解决方案3】:

    您可以像这样打印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) )
    

    【讨论】:

      【解决方案4】:
      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]);
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-30
        相关资源
        最近更新 更多