在Python中用单行转置矩阵
矩阵的转置是一项我们都可以在Python中轻松执行的任务(使用嵌套循环)。但是有一些有趣的方法可以在一行中做同样的事情。
在Python中,我们可以将矩阵实现为嵌套列表(列表中的列表)。每个元素都被视为矩阵的一行。例如 m = [[1, 2], [4, 5], [3, 6]] 表示一个 3 行 2 列的矩阵。
列表的第一个元素 - m[0]和第一行第一列中的元素 - m[0][0] 。
- 使用嵌套列表理解:嵌套列表理解用于遍历矩阵中的每个元素。在给定的示例中,我们以列主要方式遍历矩阵 (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]
- 使用 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,邮编(*矩阵))。
- 使用 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 数组