大家好,又见面了,我是你们的朋友全栈君。
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]] """
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137174.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...