在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 npmatrix = 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.Tprint(transposed_matrix) 输出:[[1 4][2 5][3 6]]
5. 使用pandas库的.T属性(适用于数据框):
import pandas as pddata = {'姓名': ['小明', '小红', '小刚'],'语文成绩': [80, 90, 85],'数学成绩': [90, 85, 95]}df = pd.DataFrame(data)df_T = df.Tprint(df_T) 输出:姓名 小明 小红 小刚语文成绩 80 90 85数学成绩 90 85 95
以上方法都可以实现矩阵或列表的转置,具体选择哪种方法取决于你的使用场景和个人偏好
