基于python中的最高有效位对二进制矩阵列进行排序

所以我有一个 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 中。我应该如何处理这个问题?


肥皂起泡泡
浏览 186回答 2
2回答

波斯汪

正如我所说的转置,排序,转回:a = [[0, 1, 1],[1, 0, 0],[0,0,1]]a = list(zip(*a))a.sort(reverse=True)a = list(map(list,zip(*a)))

潇湘沐

尝试这个: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)))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python