在Python中,转置一个矩阵或列表可以通过多种方法实现,以下是几种常见的方法:
1. 使用双重循环:
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
arr2 = []
for i in range(len(arr)):
temp = []
for j in range(len(arr)):
temp.append(arr[j][i])
arr2.append(temp)
print(arr2) 输出:[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
2. 使用列表表达式(列表推导式):
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
arr2 = [[arr[j][i] for j in range(len(arr))] for i in range(len(arr))]
print(arr2) 输出:[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
3. 使用zip函数:
def transpose(matrix):
return [list(row) for row in zip(*matrix)]
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
transposed_matrix = transpose(matrix)
print(transposed_matrix) 输出:[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
4. 使用numpy库的transpose函数或T属性:
import numpy as np
matrix = np.array([[1, 2, 3], [4, 5, 6]])
transposed_matrix = np.transpose(matrix)
print(transposed_matrix) 输出:[[1 4]
[2 5]
[3 6]]
或者使用T属性
transposed_matrix = matrix.T
print(transposed_matrix) 输出:[[1 4]
[2 5]
[3 6]]
5. 使用pandas库的.T属性(适用于数据框):
import pandas as pd
data = {'姓名': ['小明', '小红', '小刚'],
'语文成绩': [80, 90, 85],
'数学成绩': [90, 85, 95]}
df = pd.DataFrame(data)
df_T = df.T
print(df_T) 输出:姓名 小明 小红 小刚
语文成绩 80 90 85
数学成绩 90 85 95
以上方法都可以实现矩阵或列表的转置,具体选择哪种方法取决于你的使用场景和个人偏好