在numpy中重新排序矩阵

2024-10-19 16:25:03 发布

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

假设我有一个任意矩阵,它是3x3

           A  B  C
       A [[0, 1, 0],
       B [1, 0, 1],
       C [0, 1, 0]]

我有一个列表labels = [0,1,0],对应于矩阵的每一列。
例如,0对应于列1,1对应于列2,依此类推。
我想对矩阵进行重新排序,使其按标签的升序排序

第1列是A,第2列是B,第3列是C。 第1行是A,第2行是B,第3行是C。 顺序不应该弄乱每一行/每一列的内容

所以我期望的矩阵输出矩阵是:

          C  A  B
      C [[0, 0, 1],
      A [0, 0, 1],
      B [1, 1, 0]]

Tags: 内容列表labels排序顺序矩阵标签升序
1条回答
网友
1楼 · 发布于 2024-10-19 16:25:03

我花了一些时间才明白,但我想我知道你现在想做什么

>>> x = np.array([[0, 1, 0], [1, 0, 1], [0, 1, 0]])
>>> labels = [0, 1, 0]
>>> order = np.argsort(labels) # Find a sorted order of the given labels
>>> x[order][:, order] # Sort the rows and then the columns
array([[0, 0, 1],
       [0, 0, 1],
       [1, 1, 0]])

相关问题 更多 >