所以我有一个2D数组,看起来像:[[0, 1, 1][1, 0, 0][0,0,1]]
,其中所有值都存储为整数,但它们表示实际位。第一行中的值被认为是最重要的。假设每列都是基于列中位的整数,我想按降序对列进行排序,以使其看起来像[[1,1,0][0,0,1][0,0,1]]
。但是,我对如何在python中实现此目标非常迷失。有人建议我使用基数排序,但是我对这对我的情况没有帮助。我已在下面编写了两个矩阵,因此更易于可视化。
011 110
100 001
001 100
我的方法:阅读每一列,转换为int,对int进行排序,然后映射回该列。但是,如果我要处理尺寸为1000x10000
但是我觉得应该有一个更聪明的方法来做到这一点,尤其是在python中。我应该如何处理?
答案 0 :(得分:3)
正如我所说的转置,排序,转置回去
a = [[0, 1, 1],[1, 0, 0],[0,0,1]]
a = list(zip(*a))
a.sort(reverse=True)
a = list(map(list,zip(*a)))
答案 1 :(得分:1)
尝试一下:
a = [[0, 1, 1], [1, 0, 0], [0, 0, 1]]
b = list(map(list, zip(*a)))
c = sorted(b, reverse=True)
d = list(map(list, zip(*c)))