我有一个矩阵像:
[[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],然后在order_list中使用list comprehension ordered_list = [old_list [i] for i]但是在这里我我无法想出一种方法来创建嵌套的理解,我在每行执行此操作.
解决方法:
我建议使用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,sorting,list-comprehension