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]] """
今天的文章python矩阵转置与zip(*)的使用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10411.html