2016-09-08 23 views
0

我有一个矩阵,我希望安装另一个矩阵和几列,并按特定的顺序列。见例如:快速的方式从一个原始矩阵得到一个列与一定的顺序的二维数组

全矩阵

0 1 2 3 4 
[15 22 17 19 14] 
[34 67 39 70 65] 
[56 9 26 57 90] 
[11 35 81 44 33] 

所需的列

listIdsColumns = [3, 1, 0] 

结果矩阵

3 1 0 
[19 22 15] 
[70 67 34] 
[57 9 56] 
[44 35 11] 

以下代码成功执行操作。有人建议关于运行时间和行数的更优化的替代解决方案?谢谢。

def constructPartialMatrix(listIdsColumns): 
    matrixPartial = np.array(matrixFull[:, listIdsColumns[0]]) 
    listIdsColumns.remove(listIdsColumns[0]) 
    while listIdsColumns: 
     column = np.array(matrixFull[:, listIdsColumns[0]]) 
     listIdsColumns.remove(listIdsColumns[0]) 
     matrixPartial = np.column_stack((matrixPartial, column)) 
    return matrixPartial 

回答

1

IIUC你可以简单地选择 “有趣” 列:

In [41]: a 
Out[41]: 
array([[15, 22, 17, 19, 14], 
     [34, 67, 39, 70, 65], 
     [56, 9, 26, 57, 90], 
     [11, 35, 81, 44, 33]]) 

In [42]: a[:,[3,1,0]] 
Out[42]: 
array([[19, 22, 15], 
     [70, 67, 34], 
     [57, 9, 56], 
     [44, 35, 11]]) 

应该与矩阵也行:

In [44]: a 
Out[44]: 
matrix([[15, 22, 17, 19, 14], 
     [34, 67, 39, 70, 65], 
     [56, 9, 26, 57, 90], 
     [11, 35, 81, 44, 33]]) 

In [45]: a[:,[3,1,0]] 
Out[45]: 
matrix([[19, 22, 15], 
     [70, 67, 34], 
     [57, 9, 56], 
     [44, 35, 11]]) 
+0

感谢MaxU。我必须学会更加pythonic。 – HarpMan

相关问题