python中矩阵转置4种方法「建议收藏」

2022-09-05 10:06:52 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

文章目录

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

1. 使用双重循环

代码语言:javascript复制
# 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. 使用列表表达式

代码语言:javascript复制
# 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函数

代码语言:javascript复制
# 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模块

代码语言:javascript复制
# 使用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]]
'''

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137233.html原文链接:https://javaforall.cn

0 人点赞