我有一个像这样的矩阵:
[[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/