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

2024-04-19 04:30:03 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个2D数组,看起来像:[[0, 1, 1][1, 0, 0][0,0,1]],其中所有的值都存储为int,但它们表示实际的位。第一行中的值被认为是最重要的。假设每一列都是基于列中位的整数,我想按降序对列进行排序,使其看起来像[[1,1,0][0,0,1][0,0,1]]。然而,我对如何在python中实现这一点非常迷茫。有人建议我使用基数排序,但我不知道这对我的情况有什么帮助。我写了下面的两个矩阵,这样更容易形象化。你知道吗

011 110 100 001 001 100

我的方法是:读取每一列,转换为int,对int排序,映射回列。但是,如果我使用的是维数为1000x10000的矩阵,这种方法会非常复杂

但我觉得应该有一种更聪明的方法来做到这一点,尤其是在python中。我该如何处理这个问题?你知道吗


Tags: 方法排序情况矩阵整数数组建议int
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)))

相关问题 更多 >