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

python矩阵转置与zip(*)的使用Python中的矩阵转置方法有如下几种:使用双重循环做(最直接,最本质的方法)importrandomrow=3column=4array=[[random.randint(0,10)for_inrange(column)]for_inrange(row)]print(“砸门先随机创建一个呗:”,array)res=[]foriinrange(column):tmp=[]forjinrange(row):tmp.

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

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]] """
    
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JMH初探

    JMH初探JMH入门(很多情况下需要做性能基准测试(benchmark)。简单的说就是,在几种类似的解决方案中,寻找效率较高的。比如对比一下thrift,protobuf,avro在对象序列化时的效率等。这种测试通常需要对被测的代码段反复执行,最后取平均值,然后横向对比几种方案。如果能有(时间、CPU、内存、IO)曲线图表输出就更加直观了。一开始考虑用JMeter来做,但是这个框架似乎有点大,看了几次都

    2022年7月11日
  • hackbar 的简单使用

    hackbar 的简单使用https://www.cnblogs.com/wayne-tao/p/11027650.html前言:hackbar是web渗透时的经典工具,但是当我开始学习网络安全的时候,发现hackbar已经开始收费了。本篇抛砖引玉介绍几个使用方法,针对火狐浏览器的。建议与https://www.cnblogs.com/wayne-tao/tag/DVWA/一起学习。1.安装:一、Maxh…

    2022年6月9日
  • 光猫 路由器 ipv6_ipv6光猫设置

    光猫 路由器 ipv6_ipv6光猫设置电信光猫桥接+ML固件路由器实现ipv6网站访问

    2022年10月8日
  • Nginx代理转发_nginx代理和转发的区别

    Nginx代理转发_nginx代理和转发的区别nginx之proxy_pass第一种:location/proxy/{proxy_passhttp://127.0.0.1/;}代理到URL:http://127.0.0.1/test.html第二种(相对于第一种,最后少一个/location/proxy/{proxy_passhttp://127.0.0.1;}代理到URL:http://127.0.0.1/proxy/test.html第三种location/proxy/{p

    2022年10月29日
  • 软件工程导论各种图_软件工程第一章思维导图

    软件工程导论各种图_软件工程第一章思维导图1、E-R图E-R图也是实体-联系图,E-R图属于需求分析的一部分,为了把用户的数据要求清楚、准确地描述出来,系统分析员通常建立一个概念性的数据模型。下面介绍E-R图的画法E-R图由数据对象(实体)、属性、联系三部分组成。通常用矩形框代表实体、用菱形框表示关系,用椭圆形或圆角矩形表示实体(或关系)的属性。例如:2、N-S图出于要有一种不允许违背结构程序设计精神的图形工具的考虑,提出了盒图,又称N-S图。盒图的表示方法有:盒图没有箭头,因此不允许随意转移控制。(

    2022年8月13日
  • JAVA程序猿怎么才干高速查找到学习资料?

    JAVA程序猿怎么才干高速查找到学习资料?

    2021年11月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号