首页 > 编程知识 正文

matlab如何转置矩阵,python转制

时间:2023-05-06 05:20:06 阅读:149357 作者:2306

搜索热词

在本论文的例子中,论述了Python实现矩阵倒置的方法。 共享仅供参考。 具体情况如下。

前几天,小组里有同学提出了问题。 手边有清单。 列表中的两个元素,例如[ 1,2 ],随后会不断添加新列表,并添加到原来合适的位置。 例如,添加[ 3,4 ]并将原始列表扩展为[ 1,3 ]、[ 2,4 ],再添加[ 5,6 ]并扩展为[ 1,3,5 ]、[ 4,6 ]等。

其实不用脑子的话,用双重循环就能很容易地写出来:

deftrans(m ) :

a=[[] for i in m[0]]

for i in m:

forjinrange(Len ) I ) ) :

a[j].append(I[j] ) )。

return a

m=[ 1,2 ]、[ 3,4 ]、[ 5,6 ] #想象第一个列表是原始的,后面是添加到里面的

打印trans (m ) # result:[[1,[ 2,6 ] ]

但是,这个代码怎么看都很丑。

我仔细看了一下m这个结构。 等等,这不是词典iteritems () )的结果吗? 如果是dict(m )的话,会不会是结果keys )、values )。

所以我们用词典来转换一下:

deftrans(m ) :

d=DICT(m ) )。

return [d.keys (,d.values ) ]

但是仔细想想,这里面有个臭虫。 如果添加列表中的第一个元素相同,即转换后的dict的key相同,则一定不行。 而且,如果原创的列表不是两个而是多个的话,就不能使用词典了吧。 所以放弃了这个方法,还是仔细看看列表的形状。

然后又是一个疏忽的发现:

这个转置矩阵的即时感是什么意思?

没错,这个问题的本质是求解转置矩阵。 所以很简单。 还是用不用脑子的方法。

deftrans(m ) :

forIinrange(Len ) m ) ) :

forjinrange(I ) :

m[i][j],m[j][i]=m[j][i],m[i][j]

return m

m=[ 1,2,[ 4,5,6 ],[ 7,8,9 ] ]

打印传输(m ) )。

其实有点bug,看起来很好用,但是这个矩阵里矩阵的长度必须一样。

最后,集团的一位大神说:“如果只是转用矩阵的话,就直接zip就可以了。 现在我想起来了,zip的本质是这样的,取出列表中对应位置的元素,做一个新的列表,就是这个主题要做的事情。

因此,最终,这个主题(转置矩阵)的python解法相当奇怪:

deftrans(m ) :

返回zip (* d ) )。

是的。 就这么简单。 python的魅力。

希望本文能对大家的Python编程有所帮助。

总结

如果你觉得编程主页的内容不错,欢迎向程序员朋友推荐程序员网站。

此文字内容由网友互联网收集整理提供,仅供学习参考,版权归原作者所有。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。