python - 按列任意排序矩阵

标签 python sorting list-comprehension

我有一个像这样的矩阵:

[[col1,col2,col3,col4,col5],
 [4,1,3,6,2],
 [9,4,1,3,6]]

我想按任意列对矩阵重新排序,例如:

[[col3,col1,col5,col4,col2],
 [3,4,2,6,1],
 [1,9,6,3,4]]

我知道如果那是一行,我可以创建一个订单列表,如 order_list = [2,0,4,3,1] 然后使用列表理解 ordered_list = [old_list[i] for i in order_list] 但在这里我无法想出一种方法来创建嵌套理解,我对每一行执行此操作。

最佳答案

我建议使用 numpy 的花式索引。

>>> import numpy as np
>>> a = np.array([[4,1,3,6,2], [9,4,1,3,6]])                                                                                           
>>> cols = [2,0,4,3,1]                                                                                                                 
>>> a.T[cols].T                                                                                                                        
>>> 
array([[3, 4, 2, 6, 1],
       [1, 9, 6, 3, 4]])

详细信息:

>>> a
array([[4, 1, 3, 6, 2],
       [9, 4, 1, 3, 6]])
>>> a.T
array([[4, 9],
       [1, 4],
       [3, 1],
       [6, 3],
       [2, 6]])
>>> a.T[cols]
array([[3, 1],
       [4, 9],
       [2, 6],
       [6, 3],
       [1, 4]])
>>> a.T[cols].T
array([[3, 4, 2, 6, 1],
       [1, 9, 6, 3, 4]])

关于python - 按列任意排序矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53263525/

相关文章:

python - 优化二维数组

python - 遍历字典列表

python - 如何在python中返回通过sklearn的函数KernelDensity估计的分布的平均值(或期望值)?

python - 当 2 个单元格在另一个数据框中显示相同时选择行

mysql - 从一个表中选择包含另一个表中一长串单词中的任何单词的行

python - 如何在列表理解中使用 print() 和其他操作?

python - 基于投票的用户之间的相似性

java - 使用父级对链式对象进行排序

c - 保存数据时出错,数据无效

Python - 来自未排序文本的字典,列表理解?