2012-01-25 50 views
12

我想按另一個數組的值排序一個數組的行。例如:用Python中的另一個數組排序數組的行

import numpy as np 
arr1 = np.random.normal(1, 1, 80) 
arr2 = np.random.normal(1,1, (80,100)) 

欲降序ARR1排序,並且具有ARR1和ARR2之間的電流關係被保持(即,分選兩者之後,的arr1[0]arr2[0, :]行是相同的)。

回答

18

使用argsort如下:

arr1inds = arr1.argsort() 
sorted_arr1 = arr1[arr1inds[::-1]] 
sorted_arr2 = arr2[arr1inds[::-1]] 

它降序排列。

3

使用zip功能:zip(*sorted(zip(arr1, arr2)))這將做你所需要的。

現在解釋: zip(arr1, arr2)將結合這兩個列表,所以你得到了[(0,[... list 0 ...]),(1,[... list 1 ...] ),...] 接下來我們運行sorted(...),它默認根據元組中的第一個字段進行排序。 然後,我們再次運行​​,它從元組中排​​序,並根據元組中的第一個元素(來自arr1)和第二個元素(來自arr2)創建兩個列表。

相關問題