python矩阵转置与zip(*)的使用

Python中的矩阵转置方法有如下几种:

  • 使用双重循环做(最直接,最本质的方法)

    import random
    row = 3
    column = 4
    array = [[random.randint(0, 10) for _ in range(column) ]for _ in range(row)]
    print("砸门先随机创建一个呗:", array)
    res = []
    for i in range(column):
      tmp = []
      for j in range(row):
        tmp.append(array[j][i])
      res.append(tmp)
    print("看看转置后的结果:", res)
    
    """
    砸门先随机创建一个呗: [[8, 6, 7, 0], [3, 6, 9, 8], [9, 9, 0, 9]]
    看看转置后的结果: [[8, 3, 9], [6, 6, 9], [7, 9, 0], [0, 8, 9]]
    """
    
  • 巧借zip(*)

    print("使用zip(*)的转置结果:", list(zip(*array)))
    
    """
    砸门先随机创建一个呗: [[7, 4, 9, 5], [6, 7, 9, 9], [4, 6, 3, 4]]
    使用zip(*)的转置结果: [(7, 6, 4), (4, 7, 6), (9, 9, 3), (5, 9, 4)]
    """
    

    如果觉得tuple看起来不对应,可以迭代修改一下:

    print("使用zip(*)的转置结果:", [list(i) for i in zip(*array)])
    
    """
    砸门先随机创建一个呗: [[0, 10, 3, 1], [2, 4, 0, 9], [3, 6, 2, 8]]
    使用zip(*)的转置结果: [[0, 2, 3], [10, 4, 6], [3, 0, 2], [1, 9, 8]]
    """
    

    一定要注意zip()也可以实现相同的转置效果,但是它的输入参数是多个独立的可迭代对象哦,所以需要将array拆分为:[0, 10, 3, 1], [2, 4, 0, 9], [3, 6, 2, 8]作为zip()的输入参数

  • 转换为numpy,再使用np.transpose()

    import numpy as np
    nump = np.array(array)
    trans = np.transpose(nump, (1, 0))
    print("使用numpy来转置的结果:", trans.tolist())
    
    """
    砸门先随机创建一个呗: [[3, 0, 4, 3], [5, 6, 2, 0], [0, 1, 9, 9]]
    使用numpy来转置的结果: [[3, 5, 0], [0, 6, 1], [4, 2, 9], [3, 0, 9]]
    """
    
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值