📜  在Python中用单行转置矩阵

📅  最后修改于: 2022-05-13 01:55:21.487000             🧑  作者: Mango

在Python中用单行转置矩阵

矩阵的转置是一项我们都可以在Python中轻松执行的任务(使用嵌套循环)。但是有一些有趣的方法可以在一行中做同样的事情。
在Python中,我们可以将矩阵实现为嵌套列表(列表中的列表)。每个元素都被视为矩阵的一行。例如 m = [[1, 2], [4, 5], [3, 6]] 表示一个 3 行 2 列的矩阵。
列表的第一个元素 - m[0]和第一行第一列中的元素 - m[0][0]

  1. 使用嵌套列表理解:嵌套列表理解用于遍历矩阵中的每个元素。在给定的示例中,我们以列主要方式遍历矩阵 (m) 的每个元素,并将结果分配给 rez 矩阵,它是 m 的转置。
    m = [[1,2],[3,4],[5,6]]
    for row in m :
        print(row)
    rez = [[m[j][i] for j in range(len(m))] for i in range(len(m[0]))]
    print("\n")
    for row in rez:
        print(row)
    

    输出:

    [1, 2]
    [3, 4]
    [5, 6]
    
    
    [1, 3, 5]
    [2, 4, 6]
    
  1. 使用 zip: Zip 返回元组的迭代器,其中第 i 个元组包含来自每个参数序列或可迭代对象的第 i 个元素。在此示例中,我们使用 * 解压缩数组,然后对其进行压缩以获取转置。
    matrix=[(1,2,3),(4,5,6),(7,8,9),(10,11,12)]
    for row in matrix:
        print(row)
    print("\n")
    t_matrix = zip(*matrix)
    for row in t_matrix:
        print(row)
    

    输出:

    (1, 2, 3)
    (4, 5, 6)
    (7, 8, 9)
    (10, 11, 12)
    
    (1, 4, 7, 10)
    (2, 5, 8, 11)
    (3, 6, 9, 12)
    

    注意:- 如果您希望结果格式为 [[1,4,7,10][2,5,8,11][3,6,9,12]] ,您可以使用 t_matrix=map(list,邮编(*矩阵))。

  1. 使用 numpy: NumPy 是一个通用的数组处理包,旨在有效地操作大型多维数组。 transpose 方法返回传递的多维矩阵的转置视图。
    # You need to install numpy in order to import it
    # Numpy transpose returns similar result when 
    # applied on 1D matrix
    import numpy 
    matrix=[[1,2,3],[4,5,6]]
    print(matrix)
    print("\n")
    print(numpy.transpose(matrix))
    

    或者,只需在变量后使用“.T”

    # You need to install numpy in order to import it
    import numpy as np
    matrix = np.array([[1,2,3],[4,5,6]])
    print(matrix)
    print("\n")
    print(matrix.T)
    

    输出:

    [[1 2 3]
     [4 5 6]]
    
    [[1 4]
     [2 5]
     [3 6]]
    

    注意:-“.T”仅适用于 numpy 数组