2016-09-08 28 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

相關問題