Python 如何一行代码转置矩阵
在本文中,我们将展示如何在Python中以一行代码转置矩阵。以下是完成此任务的各种方法:
- 使用嵌套列表推导
- 使用NumPy模块
- 使用zip()函数
矩阵的转置是什么
矩阵的转置是行和列的交换。它用A’表示。在A’的第i行和第j列的元素将移动到A的第j行和第i列。
使用嵌套列表推导
步骤
下面是执行所需任务的算法/步骤:
- 创建一个变量来存储输入矩阵。
-
通过遍历输入矩阵中的每个元素并打印相应的元素,来打印给定的输入矩阵。
-
使用for循环和range()函数(返回以0开始以1(默认)递增并在给定数字之前停止的数字序列)遍历,直到达到行数。然后在for循环内再使用另一个for循环和len()函数(返回对象中的项目数)遍历,以及使用嵌套列表推导将元素存储在列表中。
-
通过遍历上述得到的转置矩阵中的每个元素并打印相应的元素,打印输入矩阵的转置。
示例
以下程序使用嵌套列表推导返回输入矩阵的转置 –
# input matrix
inputMatrix= [[1, 4, 2],[2, 0, 3]]
# printing input matrix
print("Input matrix:")
# traversing through each element in the input matrix
for i in inputMatrix:
# printing element
print(i)
# Transposing the matrix
# Iterating till number of rows using for loop(n iterator) and
# till number of columns using another for loop(m iterator) and storing the element(inputMatrix[n][m])
transposeMatrix= [ [inputMatrix[n][m] for n in range(len(inputMatrix))] for m in range(len(inputMatrix[0]))]
# printing transpose of a matrix
print("Transpose of an input matrix:")
# traversing through each element in the above transpose matrix
for i in transposeMatrix:
# printing corresponding element
print(i)
输出
在执行时,上述程序将生成以下输出−
Input matrix:
[1, 4, 2]
[2, 0, 3]
Transpose of an input matrix:
[1, 2]
[4, 0]
[2, 3]
使用NumPy模块
NumPy是一个用于计算和处理多维和单维列表元素的Python库。在这里将使用NumPy模块的transpose()函数,它返回列表的转置。
NumPy是一个专为在Python中高效处理数组而设计的库。它快速、易于学习,并且在存储方面非常高效。它还改善了数据处理的方式。在NumPy中,我们可以生成一个n维数组。要使用NumPy,我们只需将其导入我们的程序中,然后我们可以轻松地在我们的代码中使用NumPy的功能。
NumPy是一个流行的用于科学和统计分析的Python包。NumPy数组是具有相同数据类型的值的网格。
步骤
以下是执行所需任务的算法/步骤 –
- 使用import关键字导入NumPy模块。
-
通过使用for循环遍历输入矩阵中的每个元素并打印对应元素,打印给定的输入矩阵。
-
使用NumPy模块的transpose()函数(返回列表的转置),通过将输入矩阵作为参数传递给它并创建一个变量来获取转置输入矩阵。
-
打印结果转置的输入矩阵。
示例
以下程序使用NumPy.transpose()函数返回输入矩阵的转置 –
# importing numpy module
import numpy
# input matrix
inputMatrix= [[1, 4, 2],[2, 0, 3]]
# printing input matrix
print("Input matrix:")
# traversing through each element in the input matrix
for i in inputMatrix:
# printing element
print(i)
# getting the transpose an input matrix
transposeMatrix = numpy.transpose(inputMatrix)
# printing transpose of a matrix
print("Transpose of an input matrix:\n", transposeMatrix)
输出
执行上面的程序后,将生成以下输出:
Input matrix:
[1, 4, 2]
[2, 0, 3]
Transpose of an input matrix:
[[1 2]
[4 0]
[2 3]]
使用zip()函数
Python的zip()函数返回一个元组的迭代器,其中第i个元组包含每个参数序列的第i个元素。
这里我们使用*来解压我们的数组,然后再将其用zip函数进行转置。
步骤
下面是执行所需任务的算法/步骤:
- 创建一个变量来存储输入矩阵。
-
通过使用for循环遍历输入矩阵中的每个元素并打印相应的元素,打印给定的输入矩阵。
-
使用zip()函数来压缩输入数组(这里是将矩阵进行转置)。
-
打印输入矩阵的转置。
示例
以下程序使用zip()函数返回输入矩阵的转置:
# input matrix
inputMatrix= [(1, 4, 2),(2, 0, 3), (4, 2, 5)]
# printing input matrix
print("Input matrix:")
# traversing through each element in the input matrix
for i in inputMatrix:
# printing element
print(i)
# getting the transpose an input matrix
transposeMatrix = zip(*inputMatrix)
# printing transpose of a matrix
print("Transpose of an input matrix:")
# traversing through each element in the above transpose matrix
for i in transposeMatrix:
# printing corresponding element at the iterator index
print(i)
输出
执行上述程序后,将生成以下输出内容:
Input matrix:
(1, 4, 2)
(2, 0, 3)
(4, 2, 5)
Transpose of an input matrix:
(1, 2, 4)
(4, 0, 2)
(2, 3, 5)
结论
在本文中,我们学习了如何在Python中以一行代码找到矩阵的转置。我们使用了三种方法来实现这个目标。我们首先使用了嵌套列表推导式,然后转向了Numpy模块,最后使用了zip()方法。