2016-12-03 54 views
0

我在Python中使用numpy。我有一個1D(nx1)數組和一個2D(nxm)數組。我使用argsort來獲得一維數組的指示。現在我想用這個指令來排序我的2D(nxm)數組的柱。按colum指數排序numpy二維數組

我想知道該怎麼做?

例如:

>>>array1d = np.array([1, 3, 0]) 
>>>array2d = np.array([[1,2,3],[4,5,6]]) 

>>>array1d_indice = np.argsort(array1d) 
    array([2, 0, 1], dtype=int64) 

I want use array1d_indice to sord array2d colum to get: 
    [[3, 1, 2], 
    [6, 4, 5]] 

,還是要更容易實現,這是值得歡迎

+0

的順序,你可以解釋一下你預期的輸出應該是什麼樣子? – MSeifert

+0

我改變了我的描述,現在應該清楚了。而且j__的答案是有效的。 –

回答

0

如果你的意思是你要排序的列基於矢量,那麼你就矢量argsort使用:

vi = np.argsort(vector) 

然後在正確的順序來安排的array列,

sorted = array[:, tuple(vi)] 

讓行,開關周圍的:tuple(vi)