HOME> 世界杯谁是冠军> python中矩阵转置4种方法

文章目录

1. 使用双重循环2. 使用列表表达式3. 使用zip函数4. 使用numpy模块

1. 使用双重循环

# python 双重循环

arr = [[ 1, 2, 3],

[ 4, 5, 6],

[ 7, 8, 9],

[10, 11, 12]]

arr2 = []

# 数组的第二维维度

for i in range(len(arr[0])):

temp = []

# 数组的第一维维度

for j in range(len(arr)):

temp.append(arr[j][i])

arr2.append(temp)

print(arr2)

'''

# 输出结果为:

[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]

'''

2. 使用列表表达式

# python 列表表达式

# 使用嵌套的列表表达式

arr = [[ 1, 2, 3],

[ 4, 5, 6],

[ 7, 8, 9],

[10, 11, 12]]

# i 为第二个维度,j 为第一个维度

arr2 = [[arr[j][i] for j in range(len(arr))] for i in range(len(arr[0]))]

print(arr2)

'''

# 输出结果为:

[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]

'''

3. 使用zip函数

# python zip函数

arr = [[ 1, 2, 3],

[ 4, 5, 6],

[ 7, 8, 9],

[10, 11, 12]]

# zip(* )在这里是解压的作用

# 将arr 看做是一个打包后的数组

arr2 = zip(* arr)

print(list(arr2))

'''

# 输出结果为:

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

'''

4. 使用numpy模块

# 使用numpy转置

import numpy as np

arr = [[ 1, 2, 3],

[ 4, 5, 6],

[ 7, 8, 9],

[10, 11, 12]]

arr = np.array(arr)

# 这里可以三种方法达到转置的目的

# 第一种方法

print(arr.T)

# 第二种方法

print(arr.transpose())

# 第三种方法

print(arr.swapaxes(0, 1))

# 上面三种方法等价

'''

# 三种方法的输出结果均为:

[[ 1 4 7 10]

[ 2 5 8 11]

[ 3 6 9 12]]

'''